⊗ppPmRgEP 254 of 447 menu

Džepovi u regularnim izrazima u PHP-u

Sadržaj džepova nije dostupan samo u zamenskom stringu, već i u samom regularnom izrazu: mi možemo da stavimo nešto u džep, a zatim direktno u regularnom izrazu da kažemo da ovde treba da stoji sadržaj tog džepa.

Sadržaj džepova je dostupan preko njihovih brojeva, ispred kojih stoji obrnuta kosa crta. Na primer, nulti džep će biti dostupan ovako: \0, prvi džep ovako - \1, drugi - \2 i tako dalje.

Uveren sam da je sve gore napisano za sada veoma mutno za vas. To nije iznenađujuće, pošto su džepovi najnerazumljiviji deo regularnih izraza. Hajde da se razjašnjavamo na primerima.

Primer

Neka imamo ovakav string:

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

Hajde da pronađemo u njemu sva mesta, u kojima stoje dva ista slova jedno za drugim. Za rešavanje zadatka ćemo tražiti bilo koje slovo, stavljati ga u džep, a zatim proveravati, da li kao sledeći simbol ide sadržaj tog džepa:

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

Kao rezultat u promenljivu će biti upisano sledeće:

'! ! cd ef'

Primer

Neka imamo ovakav string:

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

Hajde da pronađemo u njemu sve reči, u kojima su ista prvo i poslednje slovo. Za rešavanje zadatka napisaćemo sledeći šablon: slovo, zatim još jedno ili više slova, a zatim takvo isto slovo kao prvo:

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

Kao rezultat u promenljivu će biti upisano sledeće:

'! ! csgd'

Primer

Umesto \1 može se pisati \g1:

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

Primer

Može se takođe pisati \g{1}:

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

Primer

U vitičastim zagradama mogu se navoditi negativni brojevi. U ovom slučaju džepovi će se računati sa kraja:

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

Praktični zadaci

Dat je string:

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

Pronađite sve podstringove, u kojima ima tri ista slova jedno za drugim.

Dat je string:

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

Pronađite sve podstringove, u kojima ima dva ili više istih slova jedno za drugim.

Dat je string:

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

Pronađite sve podstringove, u kojima ima dva iste reči jedno za drugim.

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