Herausforderung: Erstellen eines regulären Ausdrucks, der Folgendes unterscheidet:
Erster Versuch:
Der bereitgestellte anfängliche reguläre Ausdruck erkennt effektiv ausgeglichene Klammern darin for/while-Anweisungen. Es gibt jedoch Probleme, wenn der Schleifenausdruck Funktionsaufrufe enthält.
^\s*(for|while)\s* \( # match the initial opening parenthesis (?P<balanced> [^()] | \( (?P=balanced)* \) )* # Look for a sequence of balanced substrings \) # Finally, the outer closing parenthesis. \s*;\s*
Überarbeiteter Ansatz:
Die vorgeschlagene Lösung weicht von einem Regex-basierten Ansatz ab. Stattdessen wird eine vereinfachte Routine verwendet:
Vorteile :
Das obige ist der detaillierte Inhalt vonKann ein regulärer Ausdruck ordnungsgemäß mit Semikolons terminierte C-For- und While-Schleifen zuverlässig identifizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!