⊗ppPmRgNPB 252 of 447 menu

Nicht-erfassende Klammern in PHP Regex

Klammern () erfüllen zwei Funktionen - das Gruppieren von Zeichen und die Erfassungsgruppen-Funktion. Aber was tun, wenn wir gruppieren möchten, aber nicht in der Erfassungsgruppe speichern wollen? Für die Lösung dieses Problems wurden spezielle nicht-erfassende Klammern (?: ) erfunden - sie gruppieren, speichern aber nicht in der Erfassungsgruppe.

Beispiel

Im folgenden Beispiel benötigen wir die ersten Klammern für die Gruppierung und die zweiten - für die Erfassungsgruppe. Allerdings speichern beide Klammern Daten in der Erfassungsgruppe:

<?php $str = 'abab123'; $reg = '#(ab)+([1-9]+)#'; preg_match_all($reg, $str, $res); ?>

Als Ergebnis werden wir folgendes in unseren Erfassungsgruppen haben:

<?php var_dump($res[0]); // gibt 'abab123' aus var_dump($res[1]); // gibt 'ab' aus var_dump($res[2]); // gibt '123' aus ?>

Beispiel

Lassen Sie uns die ersten Klammern so ändern, dass sie nur gruppieren, aber nicht in der Erfassungsgruppe speichern:

<?php $str = 'abab123'; $reg = '#(?:ab)+([1-9]+)#'; preg_match_all($reg, $str, $res); ?>

Als Ergebnis wird unsere Zahl in der ersten Erfassungsgruppe sein:

<?php var_dump($res[1]); // gibt '123' aus ?>

Praktische Aufgaben

Es gibt Teilzeichenketten, die in zwei Teile geteilt sind durch eine beliebige Anzahl von $@ Paaren:

<?php $str = 'aaa$@bbb aaa$@$@bbb aaa$@$@$@bbb'; ?>

Finden Sie jede dieser Teilzeichenketten und speichern Sie für jede gefundene Teilzeichenkette in der ersten Erfassungsgruppe den Teil vor dem Trennzeichen und in der zweiten Erfassungsgruppe - den Teil nach dem Trennzeichen.

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