Autor Beitrag
stargate2k
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 29.05.12 18:28 
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:
ausblenden 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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 msdn.microsoft.com/e...3206d374.aspx#Greedy ;) .

_________________
>λ=