⊗ppPmRgNPB 252 of 447 menu

Nepamteće zagrade u regularnim izrazima PHP

Zagrade () obavljaju dve funkcije - grupisanje simbola i funkciju capture grupe. A šta raditi ako treba da grupišemo, ali ne želimo da stavimo u capture grupu? Za rešavanje ovog problema smišljene su specijalne nepamteće zagrade (?: ) - one grupišu, ali ne smeštaju u capture grupu.

Primer

U sledećem primeru prve zagrade su nam potrebne za grupisanje, a druge - za capture grupu. Međutim, i jedne i druge zagrade pamte podatke u capture grupu:

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

Kao rezultat, u našim capture grupama će biti sledeće:

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

Primer

Učinimo da prvi par zagrada samo grupise, ali ne stavlja u capture grupu:

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

Kao rezultat, u prvoj capture grupi će biti naš broj:

<?php var_dump($res[1]); // ispisaće '123' ?>

Praktični zadaci

Date su podniske, podeljene na dva dela proizvoljnim brojem parova $@:

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

Pronađite svaku od ovih podniski i za svaku pronađenu podnisku stavite u prvu capture grupu ono što stoji pre razdvajača, a u drugu capture grupu - ono što stoji posle razdvajača.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij