⊗ppPmRgEP 254 of 447 menu

Zátvorky v regulárnom výraze v PHP

Obsah zátvoriek je dostupný nielen v reťazci pre náhradu, ale aj v samotnom regulárnom výraze: my môžeme niečo vložiť do zátvorky a potom priamo v regulárnom výraze povedať, že tu musí stáť obsah tejto zátvorky.

Obsah zátvoriek je dostupný podľa ich čísel, pred ktorými je spätné lomítko. Napríklad, nultá zátvorka bude dostupná takto: \0, prvá zátvorka takto - \1, druhá - \2 a tak ďalej.

Som si istý, že všetko napísané vyšie je pre vás zatiaľ veľmi nejasné. To nie je prekvapujúce, pretože zátvorky - sú najmenej pochopiteľným miestom regulárnych výrazov. Poďme si to vysvetliť na príkladoch.

Príklad

Nech máme takýto reťazec:

<?php $str = 'aa bb cd ef'; ?>

Nájdime v ňom všetky miesta, na ktorých sú dve rovnaké písmená za sebou. Pre riešenie úlohy budeme hľadať ľubovoľné písmeno, vložiť ho do zátvorky a potom skontrolovať, či nasledujúcim symbolom je obsah tejto zátvorky:

<?php $res = preg_replace('#([a-z])\1#', '!', $str); ?>

Výsledkom do premennej sa zapíše nasledovné:

'! ! cd ef'

Príklad

Nech máme takýto reťazec:

<?php $str = 'asxca buzxb csgd'; ?>

Nájdime v ňom všetky slová, v ktorých sú rovnaké prvé a posledné písmená. Pre riešenie úlohy napíšeme nasledujúcu šablónu: písmeno, potom ešte jedno alebo viac písmen a potom také isté písmeno ako prvé:

<?php $res = preg_replace('#([a-z])[a-z]+\1#', '!', $str); ?>

Výsledkom do premennej sa zapíše nasledovné:

'! ! csgd'

Príklad

Namiesto \1 možno písať \g1:

<?php $res = preg_replace('#([a-z])[a-z]+\g1#', '!', $str); ?>

Príklad

Možno tiež písať \g{1}:

<?php $res = preg_replace('#([a-z])[a-z]+\g{1}#', '!', $str); ?>

Príklad

V zložených zátvorkách možno uvádzať záporné čísla. V tomto prípade sa zátvorky budú počítať od konca:

<?php $res = preg_replace('#([a-z])([a-z])\g{-2}#', '!', $str); ?>

Praktické úlohy

Daný reťazec:

<?php $str = 'aaa bbb ccc xyz'; ?>

Nájdite všetky podreťazce, v ktorých sú tri rovnaké písmená za sebou.

Daný reťazec:

<?php $str = 'a aa aaa abab bbbb'; ?>

Nájdite všetky podreťazce, v ktorých sú dve a viac rovnakých písmen za sebou.

Daný reťazec:

<?php $str = 'aaa aaa bbb bbb ccc ddd'; ?>

Nájdite všetky podreťazce, v ktorých sú dve rovnaké slová za sebou.

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ť