⊗ppPmRgEP 254 of 447 menu

Põhjad regulaaravaldises PHP-s

Põhjade sisu pole kättesaadav ainult asendusstringis, vaid ka regulaaravaldises endas: me võime panna midagi põhja ja siis otse regulaaravaldises öelda, et siin peab olema selle põhja sisu.

Põhjade sisu on kättesaadav nende numbrite järgi, mille ees on vastupidine kaldkriips. Näiteks nullind põhi on kättesaadav niimoodi: \0, esimene põhi niimoodi - \1, teine - \2 ja nii edasi.

Olen kindel, et kõik ülal kirjutatu on teile siiani üsna hägune. See pole imestusväärne, sest põhjad on regulaaravaldiste kõige arusaamatum koht. Võtame näiteid lahti.

Näide

Olgu meil selline string:

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

Leiame sellest kõik kohad, kus on kaks ühesugust tähte järjest. Ülesande lahendamiseks otsime suvalist tähte, paneme selle põhja ja seejärel kontrollime, kas järgneb selle põhja sisule:

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

Lõpuks kirjutatakse muutujasse järgmine:

'! ! cd ef'

Näide

Olgu meil selline string:

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

Leiame sellest kõik sõnad, mille esimene ja viimane täht on samad. Ülesande lahendamiseks kirjutame järgmise mustri: täht, siis veel üks või rohkem tähti, ja siis sama täht nagu esimene:

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

Lõpuks kirjutatakse muutujasse järgmine:

'! ! csgd'

Näide

\1 asemel võib kirjutada \g1:

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

Näide

Võib ka kirjutada \g{1}:

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

Näide

Loogelistes sulgudes võib määrata negatiivseid arve. Sel juhul loendatakse põhjasid lõpust:

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

Praktilised ülesanded

Antud string:

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

Leidke kõik alamstringid, kus on kolm ühesugust tähte järjest.

Antud string:

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

Leidke kõik alamstringid, kus on kaks või enam ühesugust tähte järjest.

Antud string:

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

Leidke kõik alamstringid, kus on kaks ühesugust sõna järjest.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu