⊗ppPmRgNPB 252 of 447 menu

Paranteze non-capturante în expresiile regulate PHP

Parantezele () îndeplinesc două funcții - gruparea caracterelor și funcția de captură (grup de captură). Și ce facem dacă trebuie să grupăm, dar să nu capturăm? Pentru a rezolva această problemă au fost create paranteze non-capturante (?: ) - ele grupează, dar nu capturează.

Exemplu

În exemplul următor, primele paranteze ne sunt necesare pentru grupare, iar cele doua - pentru captură. Cu toate acestea, ambele tipuri de paranteze salvează date în grupurile de captură:

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

Ca rezultat, în grupurile noastre de captură va fi următoarele:

<?php var_dump($res[0]); // va afișa 'abab123' var_dump($res[1]); // va afișa 'ab' var_dump($res[2]); // va afișa '123' ?>

Exemplu

Să facem astfel încât prima pereche de paranteze să doar grupeze, dar să nu captureze:

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

Ca rezultat, în primul grup de captură va fi numărul nostru:

<?php var_dump($res[1]); // va afișa '123' ?>

Sarcini practice

Sunt date subșiruri, împărțite în două părți de un număr arbitrar de perechi $@:

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

Găsiți fiecare astfel de subșir și pentru fiecare subșir găsit, puneți în primul grup de captură ceea ce se află înainte de separator, iar în al doilea grup de captură - ceea ce se află după separator.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge