Ich arbeite mit einem regulären Ausdruck, der eine Zeichenfolge überprüfen würde, ist es eine Funktion oder nicht. Mein regulärer Ausdruck für die Überprüfung, dass Sie wie folgt vor:Regulärer Ausdruck weitere Überprüfung
regex=r' \w+[\ ]*\(.*?\)*'
Es succefully prüft, ob die Zeichenfolge enthält eine Funktion oder nicht. Aber es packt normale Zeichenfolge, die erste Barcket-Wert enthält, wie "Test (Bedeutung des Tests)".
Also habe ich weiter zu prüfen, dass, wenn es einen Raum zwischen Funktionsnamen und Klammern, die nicht als match.So gefangen werden Ich habe Überprüfung andere wie folgt:
regex2=r'\s'
Es erfolgreich arbeiten und können Unterscheide zwischen "test()" und "test()". Aber jetzt muss ich eine andere Bedingung beibehalten, dass, wenn es kein Leerzeichen nach den Klammern gibt (zB test() abcd), es es nicht als eine Funktion abfängt. Der reguläre Ausdruck sollte nur als Übereinstimmung behandelt werden, wenn es ähnlich sein wird "test() abcd". Aber ich habe versucht mit verschiedenen regulären Ausdruck, leider funktionieren diese nicht. Ihre eine Sache zu erwähnen die Prüfzeichenfolge ist eingefügt in eine Liste bei, wenn es eine Übereinstimmung findet und im zweiten Schritt überprüft nur den Teil der Zeichenfolge. Beispiel: String: Dies ist eine Python-Funktion test() abcd Zunächst wird der String auf Funktion überprüft und wenn Übereinstimmung mit Funktionstest gefunden wird() dann senden Sie nur "test()" für ob es eine Lücke zwischen "test" und "()" gibt. In diesem letzten Schritt muss ich finden, gibt es eine Lücke zwischen "test()" und "abcd". Wenn es eine Lücke gibt es keine Übereinstimmung als Funktion sonst als eine normale Teil der Zeichenfolge angezeigt. Wie sollte ich den regulären Ausdruck für einen solchen Fall schreiben?
Der reguläre Ausdruck wird in folgenden Fällen zeigen:
1.test() abc
2.test(as) abc
3.test()
wird als Funktion nicht behandeln, wenn:
1.test (a)abc
2.test()abc
versuchen Sie, Python-Funktionen zu entsprechen? Wenn ja, versuchen Sie, die Definition oder den Anruf zu erfüllen? – aaronasterling
Nein, ich versuche hauptsächlich C-Stil-Funktion zu entsprechen, und die Regex entspricht allen Arten von Funktionen. Beide Fälle funktionieren und der Anruf. – mushfiq