⊗ppPmRgNPB 252 of 447 menu

Non-Capturing Parentheses in PHP Regex

Заградите () имаат две функции - групирање на знаци и функција на фатње (карман). А што да правиме ако ни треба да групираме, но да не фаќаме во карман? За решавање на ваквиот проблем се направени специјални нефатливи загради (?: ) - тие групираат, но не фаќаат во карман.

Пример

Во следниот пример, првите загради ни се потребни за групирање, а вторите - за карман. Сепак, и едните и другите загради зачувуваат податоци во карман:

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

Како резултат, во нашите кармани ќе има следново:

<?php var_dump($res[0]); // ќе испечати 'abab123' var_dump($res[1]); // ќе испечати 'ab' var_dump($res[2]); // ќе испечати '123' ?>

Пример

Ајде да ги направиме првите загради да групираат само, но да не фаќаат во карман:

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

Како резултат, во првиот карман ќе биде нашето число:

<?php var_dump($res[1]); // ќе испечати '123' ?>

Практични задачи

Дадени се подстрингови, поделени на два дела со произволен број на парови $@:

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

Најдете го секој од таквите подстрингови и за секој најден подстринг ставете го во првиот карман она што стои пред разделувачот, а во вториот карман - она што стои после разделувачот.

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј