Heim  >  Artikel  >  Backend-Entwicklung  >  Wie passt man a^n b^n c^n mithilfe regulärer Ausdrücke (PCRE) an?

Wie passt man a^n b^n c^n mithilfe regulärer Ausdrücke (PCRE) an?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-22 20:36:02744Durchsuche

How to Match a^n b^n c^n Using Regular Expressions (PCRE)?

Übereinstimmung von a^n b^n c^n mit regulären Ausdrücken (PCRE)

Engines für reguläre Ausdrücke sind über die ursprüngliche Theorie der regulären Grammatik hinaus fortgeschritten Dadurch können sie mit Mustern umgehen, die zuvor als unmöglich galten. Ein solches Muster ist die kontextsensitive Grammatik {a^n b^n c^n; n>0}, das Zeichenfolgen mit einer gleichen Anzahl von a, b und c abgleicht.

Dieses komplexe Muster kann mit dem folgenden PCRE-Ausdruck abgeglichen werden:

~^
    (?=(a(?-1)?b)c)
     a+(b(?-1)?c)
$~x

Erläuterung:

  • Die ^- und $-Anker stellen sicher, dass das Muster mit der gesamten Zeichenfolge übereinstimmt.
  • Die positive Lookahead-Behauptung (?=(a(?-1)?b) c) prüft, ob es für jedes Vorkommen von „ab“ eine gleiche Anzahl von cs gibt.
  • Die a (b(?-1)?c)-Gruppe erfasst eine beliebige Anzahl von as, gefolgt von an gleiche Anzahl von Bs und Cs.

Wichtige Erkenntnisse:

  • Modernes PCRE ermöglicht den Abgleich nicht regelmäßiger Muster.
  • Dieses Muster veranschaulicht die Leistungsfähigkeit von Lookahead-Behauptungen und rekursiven Negationen.
  • Die Fähigkeit von Regex, kontextsensitive Grammatiken zu analysieren, stellt die Vorstellung in Frage, dass sie auf reguläre Grammatiken beschränkt sind.

Beispielübereinstimmungen:

  • aaabbbccc stimmt mit (1) überein
  • aaabbbcc stimmt nicht überein (0)
  • aaaccc stimmt nicht überein (0)
  • aabcc stimmt nicht mit (0) überein
  • abbcc stimmt nicht mit (0) überein

Dieser reguläre Ausdruck zeigt, dass die Fähigkeiten von PCRE über reguläre Sprachen hinausgehen und es ihm ermöglichen, mehr zu verarbeiten komplexe Muster.

Das obige ist der detaillierte Inhalt vonWie passt man a^n b^n c^n mithilfe regulärer Ausdrücke (PCRE) an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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