⊗ppPmRgEP 254 of 447 menu

Iemaušanās regulārajā izteiksmē PHP

Iemaušanās saturs ir pieejams ne tikai aizstāšanas virknē, bet arī pašā regulārajā izteiksmē: mēs varam kaut ko ievietot iemaušanās, un pēc tam tieši regulārajā izteiksmē norādīt, ka šeit jāatrodas šīs iemaušanās saturam.

Pieejamība pie iemaušanās satura notiek pēc to numuriem, pirms kuriem ir apgriezts slīpsvītras simbols. Piemēram, nulles iemaušanās būs pieejama šādi: \0, pirmā iemaušanās šādi - \1, otrā - \2 un tā tālāk.

Esmu pārliecināts, ka viss iepriekš rakstītais pagaidām ir diezgan neskaidrs jums. Tas nav pārsteidzoši, jo iemaušanās ir regulāro izteiksmju visnesaprotamākā vieta. Apskatīsim to ar piemēriem.

Piemērs

Pieņemsim, ka mums ir šāda virkne:

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

Mēģināsim atrast tajā visas vietas, kurās atrodas divi jebkuri vienādi burti pēc kārtas. Lai atrisinātu uzdevumu, mēs meklēsim jebkuru burtu, ievietosim to iemaušanās, un pēc tam pārbaudīsim, vai nākamais simbols ir šīs iemaušanās saturs:

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

Rezultātā mainīgajā tiks ierakstīts sekojošais:

'! ! cd ef'

Piemērs

Pieņemsim, ka mums ir šāda virkne:

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

Atradīsim tajā visus vārdus, kuros pirmais un pēdējais burts ir vienādi. Lai atrisinātu uzdevumu, uzrakstīsim šādu veidni: burts, pēc tam vēl viens vai vairāki burti, un pēc tam tāds pats burts kā pirmais:

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

Rezultātā mainīgajā tiks ierakstīts sekojošais:

'! ! csgd'

Piemērs

\1 vietā var rakstīt \g1:

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

Piemērs

Var arī rakstīt \g{1}:

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

Piemērs

Cirtainajās iekavās var norādīt negatīvus skaitļus. Šajā gadījumā iemaušanās tiks skaitītas no beigām:

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

Praktiskie uzdevumi

Dota virkne:

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

Atrodiet visas apakšvirknes, kurās ir trīs vienādi burti pēc kārtas.

Dota virkne:

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

Atrodiet visas apakšvirknes, kurās ir divi vai vairāki vienādi burti pēc kārtas.

Dota virkne:

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

Atrodiet visas apakšvirknes, kurās ir divi vienādi vārdi pēc kārtas.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt