Autor Beitrag
Nyrk
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 11.02.08 21:06 
Hallo,


ich habe folgendes Problem.... und zwar hier erst mal der Inhalt

Inhalt:
ausblenden Quelltext
1:
daten[1]:'hallo','test';					


JEtzt habe ich zuerst alles zwischen daten[irgendwas]: und ; gefunden...
Dann mit dem zweiten Pattern möchte ich alles zwischen ' und ' haben.

Also hab ich folgenden Code genommen...


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
void Button1Click(object sender, EventArgs e)
    {
      Regex myregex = new Regex("daten\\[[0-9]\\]:(.*);");
      Match m = myregex.Match(textBox2.Text);
      String s = m.Groups[1].Value.ToString();
      
      Regex myregex1 = new Regex("[0-9a-zA-Z]*[0-9a-zA-Z]");
      Match m1 = myregex1.Match(s);  
    }


Jetzt bekomm ich mit dem unteren Pattern auch hallo als String zurück, doch ich möchte auch test haben...wie mach ich das?

Nyrk


P.S. Crossposting: www.mycsharp.de/wbb2...d.php?threadid=50966
Moderiert von user profile iconChristian S.: C#-Tags korrigiert


Zuletzt bearbeitet von Nyrk am Mo 11.02.08 21:18, insgesamt 1-mal bearbeitet
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 11.02.08 21:12 
Hallo und :welcome:!

Ich würde das ein einem Rutsch machen:
ausblenden Quelltext
1:
^daten\[\d\]:'([^']*?)','([^']*?)';$					

Irgendwelche Backslashes darfst Du dann selber noch hinzufügen ;-)

Grüße
Christian

//edit: Und wenn Du das nächste Mal dieselbe Frage auch in einem anderen Forum hast, dann mach Dir hier zumindest die Mühe (a) die korrekten C#-Tags zu verwenden und (b) einen Link auf den Thread im anderen Forum zu setzen. Du willst, dass sich hier jemand Mühe macht, also mach Dir bitte auch etwas Mühe.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Nyrk Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 11.02.08 21:17 
ok, schonmal vielen Dank...

Doch wie springe ich nun zu den Ergebnissen? Denn es gibt ja dann mehrere Ergebnisse bzw. Treffer.

Gruß

Nyrk
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 11.02.08 21:21 
Wie Du es schon bei Deinem ersten Quelltext gemacht hast: Über die Gruppen.

Der gesamte Match ist Gruppe 0. Die erste Klammer ist Gruppe 1, die zweite Klammer Gruppe 2.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Nyrk Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 11.02.08 21:35 
Ok, das Problem ist nun, dass es teilweise mehr als 2 Inhalte sind...evtl. manchmal bis zu 20.
Mit deinem Beispiel kann ich ja jetzt nicht dynamisch bestimmen wie ich die Inhalte lese oder?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 11.02.08 21:43 
Das hättest Du auch gleich sagen können :?

Dann würd ich mit diesem RegEx auf den String losgehen: '([^']*?)'
Und dann kannst Du über deinRegex.Matches(deinString) alle Matches holen. Jeweils die Gruppe 1 eines jeden Matches dürfte das sein, was Du suchst.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Nyrk Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 11.02.08 22:14 
ok, das such ich...wie gehe ich denn die matches durch?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 11.02.08 22:18 
Am einfachsten in einer foreach-Schleife. Wenn Du die Hilfe zur RegeEx-Klasse aufrufst, gibt's da zwei Beispiele. Das untere zeigt, wie man das macht.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".