⊗ppPmRgNPB 252 of 447 menu

Niet-bewarende haakjes in PHP regex

Haakjes () vervullen twee functies - groepering van karakters en de functie van capture groep (capturing group). E Wat te doen als we moeten groeperen, maar niet in een capture groep willen plaatsen? Om dit probleem op te lossen zijn speciale niet-bewarende haakjes (?: ) bedacht - ze groeperen, maar plaatsen niet in een capture groep.

Voorbeeld

In het volgende voorbeeld zijn de eerste haakjes nodig voor groepering, en de tweede - voor een capture groep. Echter, beide soorten haakjes slaan gegevens op in een capture groep:

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

Het resultaat in onze capture groepen zal het volgende zijn:

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

Voorbeeld

Laten we ervoor zorgen dat het eerste paar haakjes alleen groepeert, maar niet in een capture groep plaatst:

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

Het resultaat is dat in de eerste capture groep ons getal staat:

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

Praktische taken

Gegeven substrings, gescheiden in twee delen door een willekeurig aantal paren $@:

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

Vind elk van dergelijke substrings en voor elke gevonden substring, plaats in de eerste capture groep wat voor de scheider staat, en in de tweede capture groep - wat na de scheider staat.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren