⊗ppPmRgNPB 252 of 447 menu

Nezachytávajúce zátvorky v regulárnych výrazoch PHP

Zátvorky () plnia dve funkcie - zoskupovanie znakov a funkciu zachytenia (tzv. pocket). A čo robiť, ak potrebujeme zoskupiť, ale nechceme zachytiť? Na vyriešenie tohto problému boli vytvorené špeciálne nezachytávajúce zátvorky (?: ) - tie zoskupujú, ale nezachytávajú do pocket.

Príklad

V nasledujúcom príklade potrebujeme prvé zátvorky pre zoskupenie a druhé - pre zachytenie. Avšak, oboje zátvorky ukladajú údaje do pocket:

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

V dôsledku toho budeme mať v našich pocketoch nasledovné:

<?php var_dump($res[0]); // vypíše 'abab123' var_dump($res[1]); // vypíše 'ab' var_dump($res[2]); // vypíše '123' ?>

Príklad

Urobme tak, aby prvá dvojica zátvoriek iba zoskupovala, ale nezachytávala do pocket:

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

V dôsledku toho bude v našom prvom pocket naše číslo:

<?php var_dump($res[1]); // vypíše '123' ?>

Praktické úlohy

Sú dané podreťazce, rozdelené na dve časti ľubovoľným počtom párov $@:

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

Nájdite každý z takýchto podreťazcov a pre každý nájdený podreťazec vložte do prvého pocket to, čo je pred oddeľovačom, a do druhého pocket - to, čo je za oddeľovačom.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť