Autor Beitrag
bergrath
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Do 29.11.07 11:37 
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:
ausblenden 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 user profile iconjasocul: C#-Tags hinzugefügt
Moderiert von user profile iconjasocul: Topic aus C# - Die Sprache verschoben am Do 29.11.2007 um 12:19
maro158
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Do 29.11.07 12:40 
Folgendes Beispiel funktioniert:


ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: 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.
ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35



BeitragVerfasst: Do 29.11.07 14:51 
[quote="user profile iconbergrath"]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...