Entwickler-Ecke

Basistechnologien - Regex/MatchCollection Problem !


stargate2k - Di 29.05.12 18:28
Titel: Regex/MatchCollection Problem !
Hi,

ich habe ein Problem mit der Regex-Syntax und zwar will ich in einem C-File nach einer bestimmten Methode suchen.. Diese Methode darf im Code aber nur einmal vorkommen darum will ich mit Regex bzw MatchCollection überprüfen ob dies der Fall ist..


Mein C-Testfile das durchsucht werden soll sieht so aus:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
//------------------------------------
bool testMachine_init()
{
    return statemachine_init(var1, var2,var3,var5);
}

bool testMachine_init()
{
    return statemachine_init(var1, var2,var3,var5);
}
//--------------------------------------------


Jetzt will ich praktisch mit MatchCollection erreichen dass der Count=2 anzeigt, aber es zeigt mir immer nur an das es "eine" statemachine_init Methode gefunden hat.

hier ist der dazugeöhrige C# Code


C#-Quelltext
1:
2:
string FunctionToRead = "statemachine_init";
MatchCollection matches = Regex.Matches(CSource, " " + functionToRead + @" *\(.*\) *;", RegexOptions.Singleline)


mit "matches.Count" sollte es mir jetzt eigentlich 2 anzeigen da die statemachine_init Methode 2 mal vorhanden ist, aber es zeigt mir immer eine 1 an und ich hab keine Ahnung was ich falsch mache..

mfg stargate

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Di 29.05.2012 um 18:30


Kha - Di 29.05.12 21:14

Viel Zeit mit Debuggen hast du bei dem Problem aber nicht verbracht, oder? Schau dir den Match einmal an und danach http://msdn.microsoft.com/en-us/library/3206d374.aspx#Greedy ;) .