Problem mit reg. Ausdruck
Verfasst: Dienstag 22. August 2006, 14:49
Hallo.
Ich versuche, herauszufinden, wie oft eine bestimmte Funktion in einer Datei vorkommt. Dazu lese ich erst eine Funktionsbibliothek ein, um eine Liste der Funktionen zu erhalten, und walke dann durch ein Verzeichnis und prüfe pro Datei, wie oft jede Funktion darin vorkommt.
Zuerst habe ich das so geprüft:
Duch da ich auch Funktionen namens h() und p() habe, würde obiger Ausdruck ja auch testmich() matchen, wenn ich nach h\s*\\( suche.
Also wollte ich das Sonderzeichen b Verwenden, um es als Boundary vor den Funktionsnamen zu setzen:
Das bringt mir aber für jede Funktion 0 Treffer.
Bringt mir wieder eine uanderen Wert.
Welche Variante ist denn jetzt richtig? \b oder \\b? Wenn \s funktioniert (tut es das?), müsste es ja \b sein.
Grüße,
Sanji
Ich versuche, herauszufinden, wie oft eine bestimmte Funktion in einer Datei vorkommt. Dazu lese ich erst eine Funktionsbibliothek ein, um eine Liste der Funktionen zu erhalten, und walke dann durch ein Verzeichnis und prüfe pro Datei, wie oft jede Funktion darin vorkommt.
Zuerst habe ich das so geprüft:
Code: Alles auswählen
expr = re.compile("("+function+")\s*\\(",re.S|re.I)
Also wollte ich das Sonderzeichen b Verwenden, um es als Boundary vor den Funktionsnamen zu setzen:
Code: Alles auswählen
expr = re.compile("\b("+function+")\s*\\(",re.S|re.I)
Code: Alles auswählen
expr = re.compile("\\b("+function+")\s*\\(",re.S|re.I)
Welche Variante ist denn jetzt richtig? \b oder \\b? Wenn \s funktioniert (tut es das?), müsste es ja \b sein.
Grüße,
Sanji