⊗ppPmRgEP 254 of 447 menu

Rückverweise in regulären Ausdrücken in PHP

Der Inhalt von Rückverweisen ist nicht nur in der Ersetzungszeichenkette verfügbar, sondern auch im regulären Ausdruck selbst: wir können etwas in einen Rückverweis aufnehmen und dann direkt im regulären Ausdruck sagen, dass hier der Inhalt dieses Rückverweises stehen muss.

Der Inhalt der Rückverweise ist über ihre Nummern verfügbar, denen ein Backslash vorangestellt ist. Zum Beispiel wäre der nullte Rückverweis so verfügbar: \0, der erste Rückverweis so - \1, der zweite - \2 und so weiter.

Ich bin sicher, dass alles oben Geschriebene für Sie noch sehr unklar ist. Das ist nicht verwunderlich, denn Rückverweise sind der am schwersten zu verstehende Teil der regulären Ausdrücke. Lassen Sie uns das an Beispielen erarbeiten.

Beispiel

Nehmen wir an, wir haben die folgende Zeichenkette:

<?php $str = 'aa bb cd ef'; ?>

Lassen Sie uns alle Stellen darin finden, an denen zwei gleiche Buchstaben hintereinander stehen. Um die Aufgabe zu lösen, suchen wir nach einem beliebigen Buchstaben, nehmen ihn in einen Rückverweis auf und prüfen dann, ob das nächste Zeichen dem Inhalt dieses Rückverweises entspricht:

<?php $res = preg_replace('#([a-z])\1#', '!', $str); ?>

In der Variable steht danach folgendes:

'! ! cd ef'

Beispiel

Nehmen wir an, wir haben die folgende Zeichenkette:

<?php $str = 'asxca buzxb csgd'; ?>

Lassen Sie uns alle Wörter darin finden, in denen der erste und der letzte Buchstabe gleich sind. Um die Aufgabe zu lösen, schreiben wir das folgende Muster: Buchstabe, dann ein oder mehrere weitere Buchstaben, und dann derselbe Buchstabe wie der erste:

<?php $res = preg_replace('#([a-z])[a-z]+\1#', '!', $str); ?>

In der Variable steht danach folgendes:

'! ! csgd'

Beispiel

Anstelle von \1 kann \g1 geschrieben werden:

<?php $res = preg_replace('#([a-z])[a-z]+\g1#', '!', $str); ?>

Beispiel

Man kann auch \g{1} schreiben:

<?php $res = preg_replace('#([a-z])[a-z]+\g{1}#', '!', $str); ?>

Beispiel

In den geschweiften Klammern können negative Zahlen angegeben werden. In diesem Fall werden die Rückverweise vom Ende her gezählt:

<?php $res = preg_replace('#([a-z])([a-z])\g{-2}#', '!', $str); ?>

Praktische Aufgaben

Gegeben sei die Zeichenkette:

<?php $str = 'aaa bbb ccc xyz'; ?>

Finden Sie alle Teilzeichenketten, in denen drei gleiche Buchstaben hintereinander vorkommen.

Gegeben sei die Zeichenkette:

<?php $str = 'a aa aaa abab bbbb'; ?>

Finden Sie alle Teilzeichenketten, in denen zwei oder mehr gleiche Buchstaben hintereinander vorkommen.

Gegeben sei die Zeichenkette:

<?php $str = 'aaa aaa bbb bbb ccc ddd'; ?>

Finden Sie alle Teilzeichenketten, in denen zwei gleiche Wörter hintereinander vorkommen.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen