⊗ppPmRgNPB 252 of 447 menu

Nezachytávající závorky v regulárních výrazech PHP

Závorky () plní dvě funkce - seskupování znaků a funkci zachytávání. A co dělat, když potřebujeme seskupit, ale nezachytávat? Pro řešení tohoto problému byly vytvořeny speciální nezachytávající závorky (?: ) - seskupují, ale nezachytávají.

Příklad

V následujícím příkladu první závorky potřebujeme pro seskupení, a druhé - pro zachytávání. Avšak oboje závorky ukládají data do zachytávacích skupin:

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

V důsledku budou naše zachytávací skupiny obsahovat následující:

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

Příklad

Upravme to tak, aby první pár závorek pouze seskupoval, ale nezachytával:

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

V důsledku bude v první zachytávací skupině naše číslo:

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

Praktické úlohy

Jsou dány podřetězce, rozdělené na dvě části libovolným počtem párů $@:

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

Najděte každý z těchto podřetězců a pro každý nalezený podřetězec vložte do první zachytávací skupiny to, co je před oddělovačem, a do druhé zachytávací skupiny - to, co je za oddělovačem.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout