Heim > Backend-Entwicklung > PHP-Tutorial > Kann PCRE kontextsensitive Grammatiken wie {anbncn; n>0}?

Kann PCRE kontextsensitive Grammatiken wie {anbncn; n>0}?

Mary-Kate Olsen
Freigeben: 2024-10-22 20:51:28
Original
953 Leute haben es durchsucht

Can PCRE Handle Context-Sensitive Grammars like {anbncn; n>0}?0}?" />

Verbesserung regulärer Ausdrücke: Parsen kontextsensitiver Grammatiken mit PCRE

Implementierungen regulärer Ausdrücke wie PCRE weisen bemerkenswerte Fähigkeiten auf, die über herkömmliche kontextfreie Grammatiken hinausgehen. Ein Paradebeispiel ist die Fähigkeit, die kontextfreie Grammatik {anbn; n>0}. Es stellt sich jedoch die Frage: Kann PCRE überhaupt mit komplexeren kontextsensitiven Grammatiken wie {anbncn; n>0}?

Eine Lösung

Basierend auf einem früheren Versuch und nachfolgenden Verbesserungen wurde eine Lösung gefunden:

$regex = '~^
    (?=(a(?-1)?b)c)
     a+(b(?-1)?c)
$~x';
Nach dem Login kopieren

Die Lösung verstehen

Entfernt man die Lookahead-Behauptung, prüft die Regex, ob eine beliebige Anzahl von „a“ gefolgt von einer gleichen Anzahl von „b“ und „c“ vorliegt. Die Lookahead-Behauptung (?=(a(?-1)?b)c) stellt sicher, dass die Anzahl der „a“ mit der Anzahl der „b“ übereinstimmt.

Auswirkungen

Diese Lösung zeigt, dass PCRE seine Reichweite über nichtreguläre Grammatiken hinaus erweitern und sogar in den Bereich nicht kontextfreier Grammatiken vordringen kann. Dies widerlegt das weit verbreitete Missverständnis, dass reguläre Ausdrücke in ihren Parsing-Fähigkeiten von Natur aus begrenzt sind.

Das obige ist der detaillierte Inhalt vonKann PCRE kontextsensitive Grammatiken wie {anbncn; n>0}?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage