Entwickler-Ecke
Basistechnologien - MatchCollection-Problem bei Verwendung von Regex
bergrath - Do 29.11.07 11:37
Titel: MatchCollection-Problem bei Verwendung von Regex
Hi Leute.
Ich durchsuche eine Textdatei mit Regex nach bestimmten Ausdrücken. Diese Ausdrücke kommen auch mehrmals vor, aber ich erhalte immer nur einen einzelnen Wert zurück.Da ich MatchCollection verwende müssten eigentlich doch mehrere Ergebnisse dabei rauskommen wenn der Ausdruck mehrmal vorkommt, oder?
Ich poste hier mal meinen Code und vielleicht erkennt jemand von euch wo das Problem liegen könnte. Also warum immer nur ein einzelner Wert zurück gegeben wird.
C#-Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| MatchCollection mc; String[] results = new String[120]; int[] matchposition = new int[120];
Regex r = new Regex("[[2][3][D][=][S][W][A-Z][A-Z][$]"); mc = r.Matches(gekürzteSolve);
for (int i = 0; i < mc.Count; i++) { results[i] = mc[i].Value; matchposition[i] = mc[i].Index; textBox2.Text = results[i]; } |
Ich habe es auch mit Quantoren probiert, aber das ändert auch nichts am Ergebnis.
Für Tipps wäre ich sehr dankbar.
MfG
Moderiert von
jasocul: C#-Tags hinzugefügtModeriert von
jasocul: Topic aus C# - Die Sprache verschoben am Do 29.11.2007 um 12:19
maro158 - Do 29.11.07 12:40
Folgendes Beispiel funktioniert:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| static void Main(string[] args) { MatchCollection mc; String[] results = new String[120]; int[] matchposition = new int[120];
string gekürzteSolve = "23D=SWAB$ blabla 23D=SWCD$ blabla 23D=SWEF$";
Regex r = new Regex("[[2][3][D][=][S][W][A-Z][A-Z][$]"); mc = r.Matches(gekürzteSolve);
for (int i = 0; i < mc.Count; i++) { results[i] = mc[i].Value; matchposition[i] = mc[i].Index; Console.WriteLine(results[i]); }
Console.ReadKey(); } |
bergrath - Do 29.11.07 13:44
Hi.Danke für den Hinweis.
Aber den String den ich verwende habe ich vorher eingelesen und bearbeitet.Und diesen String muss ich auch verwenden um mit der Regex zu untersuchen. Ich poste hier mal meinen ganzen Code. Vielleicht sieht man ja dann woran der Fehler liegt.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| private void button3_Click(object sender, EventArgs e) { StreamReader sr = new StreamReader("MSDV.txt");
string matchstr = "SOLVE SFI"; string searchedstr = sr.ReadToEnd(); int[] allOccurences = FindAll(matchstr, searchedstr, 0); gekürzteSolve = searchedstr.Remove(allOccurences[0]); textBox1.Text = gekürzteSolve;
MatchCollection mc; String[] results = new String[120]; int[] matchposition = new int[120];
Regex r = new Regex("[[2][3][D][=]{10}[S][W][A-Z][A-Z]]"); mc = r.Matches(gekürzteSolve);
for (int i = 0; i < mc.Count; i++) { results[i] = mc[i].Value; matchposition[i] = mc[i].Index; textBox2.Text = results[i]; } }
} |
Vielen Dank für die Tipps im Voraus.
MfG
maro158 - Do 29.11.07 14:51
[quote="
bergrath"]Hi.Danke für den Hinweis.
Aber den String den ich verwende habe ich vorher eingelesen und bearbeitet.Und diesen String muss ich auch verwenden um mit der Regex zu untersuchen. Ich poste hier mal meinen ganzen Code. Vielleicht sieht man ja dann woran der Fehler liegt.[cs]
Hi! Ich vermute mal, dass es Probleme mit Deinem Eingabestring gibt.
Poste doch "MSDV.txt", dann können wir weiter überlegen...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!