Lookbehind-Assertions variabler Länge: Die Zukunft regulärer Ausdrücke?

Linda Hamilton
Freigeben: 2024-10-28 09:11:29
Original
532 Leute haben es durchsucht

 Variable-Length Lookbehind Assertions: The Future of Regular Expressions?

Lookbehind-Assertionen variabler Länge in regulären Ausdrücken

Reguläre Ausdrücke bieten leistungsstarke Mustervergleichsfunktionen, die Implementierung von Lookbehind-Assertionen variabler Länge jedoch schon ist schon lange ein Diskussionsthema.

Implementierungen mit Lookbehind-Assertions

Derzeit werden Lookbehind-Assertionen variabler Länge vom Regex-Modul in Python unterstützt. Die Syntax ist (?

<code class="python">>>> import regex
>>> m = regex.search('(?<!foo.*)bar', 'f00bar')
>>> print(m.group())
bar
>>> m = regex.search('(?<!foo.*)bar', 'foobar')
>>> print(m)
None</p>
<p><strong>Alternativen ohne Lookbehind-Assertionen</strong></p>
<p>In Ermangelung von Lookbehind-Behauptungen gibt es zwei Alternativen:</p>
<ul>
<li>
<p><strong>K (Keep):</strong> Dieses Symbol markiert einen Punkt im Muster, vor dem Alle übereinstimmenden Zeichen werden vor der Ersetzung oder Gruppierung verworfen.</p>
<pre class="brush:php;toolbar:false">s/(?<=foo.*)bar/moo/s;
Nach dem Login kopieren

Wird:

s/foo.*\Kbar/moo/s;
Nach dem Login kopieren
  • Negative Lookahead: Diese Technik verwendet ein Negativ Lookahead, um zu prüfen, ob „foo“ fehlt.

    s/(?<!foo.*)bar/moo/s;
    Nach dem Login kopieren

    Wird:

    s/^(?:(?!foo).)*\Kbar/moo/s;
    Nach dem Login kopieren
  • Zukünftige Implementierungen

    Das Fehlen von Lookbehind-Behauptungen variabler Länge in Mainstream-Sprachen wie Perl und JavaScript hat Fragen zur zukünftigen Implementierung aufgeworfen. Es ist möglich, dass diese Sprachen eines Tages ein erweitertes Modul für reguläre Ausdrücke ähnlich dem regulären Ausdruck von Python übernehmen werden.

    Einschränkungen von Alternativen

    • K ist nicht so flexibel wie Lookbehind-Behauptungen und können den Endpunkt der verworfenen Zeichen nicht angeben.
    • Negative Lookaheads können komplexer sein und werden möglicherweise nicht von allen regulären Ausdrucks-Engines unterstützt.

    Zusätzliche Fragen

    • Ist es möglich, einen Endpunkt für den K-Effekt anzugeben?
    • Gibt es erweiterte Implementierungen regulärer Ausdrücke für Perl, Ruby, JavaScript und PHP, die dem regulären Ausdruck von Python ähneln?

    Das obige ist der detaillierte Inhalt vonLookbehind-Assertions variabler Länge: Die Zukunft regulärer Ausdrücke?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Quelle:php.cn
    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