Simbolu grupas PHP regulārajās izteiksmēs
Pastāv īpašas komandas, kas ļauj
atlasīt uzreiz veselas simbolu grupas. Komanda
\d nozīmē ciparu no 0 līdz 9.
Komanda \w apzīmē ciparu, latīņu
burtu vai apakšsvītras zīmi. Komanda \s
apzīmē atstarpi vai atstarpes simbolu:
atstarpi, rindas beigas, tabulēšanu. Var
invertēt komandas nozīmi, ierakstot lielo
burtu: piemēram, ja \d - cipars,
tad \D - nav cipars.
Piemērs
Atradīsim visus ciparus:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'! !! !!!'
Piemērs
Atkārtošanās operatori uzskata komandu-grupas
par vienu veselu, tas ir, grupējošas iekavas
nav vajadzīgas. Nākamajā piemērā meklēšanas šablons
izskatās šādi: cipars no 0 līdz 9
vienu vai vairāk reizes:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! ! abc @@@'
Piemērs
Nākamajā piemērā meklēšanas šablons izskatās
šādi: jebkas viens vai vairāk reizes,
bet ne cipars no 0 līdz 9:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'123!3!'
Piemērs
Šajā piemērā meklēšanas šablons izskatās šādi: atstarpes simbols vienu reizi:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'1!12!123!abc!@@@'
Piemērs
Šajā piemērā meklēšanas šablons izskatās šādi:
NE atstarpes simbols viens vai vairāk reizes.
Visas apakšvirknes, atdalītas ar atstarpēm, tiks aizvietotas
ar '!':
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! ! ! !'
Piemērs
Šajā piemērā meklēšanas šablons izskatās šādi:
cipars vai burts viens vai vairāk reizes.
Visas apakšvirknes, kas sastāv no cipariem un burtiem,
tiks aizvietotas ar '!':
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! ! ! @@@'
Piemērs
Šajā piemērā meklēšanas šablons izskatās šādi:
NE cipars un NE burts viens vai vairāk reizes.
Šajā definīcijā mūsu gadījumā ietilpst
'@@@' un visas atstarpes (tās arī
nav cipari un nav burti). Pievērsiet uzmanību
tam, ka beigās ir viens '!' - tajā
pārveidojās virkne ' @@@' - ar
atstarpi sākumā:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Rezultātā mainīgajā ierakstīsies sekojošais:
'1!12!123!Abc!'
Praktiskie uzdevumi
Dota virkne:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes,
kurās malās atrodas burti 'a',
un starp tiem ir viens cipars.
Dota virkne:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes,
kurās malās atrodas burti 'a',
un starp tiem ir jebkurš ciparu daudzums.
Dota virkne:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes,
kurās malās atrodas burti 'a',
un starp tiem ir jebkurš ciparu daudzums (ieskaitot
arī nulles ciparu skaitu, tas ir, virkni 'aa').
Dota virkne:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
sekojošā veidā: malās atrodas burti
'a' un 'b', un starp tiem - nav
cipars.
Dota virkne:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs virknes
sekojošā veidā: malās atrodas burti
'a' un 'b', un starp tiem - nav
burts un nav cipars.
Dota virkne:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Uzrakstiet regulāro izteiksmi, kas aizvietos visas atstarpes
ar '!'.