Übereinstimmung kontextsensitiver Grammatiken mit PCRE: A^n B^n C^n (z. B. „aaabbbccc“)
Während regelmäßig Ausdrücke werden traditionell mit dem Parsen regulärer Grammatiken in Verbindung gebracht, moderne Implementierungen wie PCRE bieten erweiterte Funktionen. Dies wirft die Frage auf: Können wir PCRE verwenden, um komplexere, kontextsensitive Grammatiken zu analysieren?
Lassen Sie uns insbesondere die Herausforderung untersuchen, Zeichenfolgen nach der kontextsensitiven Grammatik {a^n b^n c^n; n > 0} (z. B. „aaabbbccc“).
Regex-Lösung:
Inspiriert durch den ersten Versuch von NullUserException haben wir den folgenden Regex entwickelt:
~^ (?=(a(?-1)?b)c) a+(b(?-1)?c) $~x
Erklärung:
Testfälle:
Wir haben den regulären Ausdruck anhand verschiedener Eingaben getestet, darunter:
Schlussfolgerung:
Diese Regex demonstriert die bemerkenswerte Leistungsfähigkeit moderner regulärer Ausdrücke, die über reguläre Grammatiken hinausgehen und sogar kontextsensitive Grammatiken wie {a^n b^n c^n} abgleichen. Diese Fähigkeit, komplexere Muster zu analysieren, eröffnet neue Möglichkeiten für Regex-Anwendungen.
Das obige ist der detaillierte Inhalt vonKann PCRE kontextsensitive Grammatiken wie {a^n b^n c^n; zuordnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!