Simbolių grupės PHP reguliariosiose išraiškose
Yra specialios komandos, kurios leidžia
pasirinkti iš karto ištisas simbolių grupes. Komanda
\d reiškia skaitmenį nuo 0 iki 9.
Komanda \w žymi skaitmenį, lotynišką
raidę arba pabraukimo ženklą. Komanda \s
žymi tarpą arba tarpinį simbolį:
tarpą, eilutės pertrauką, tabuliaciją. Galima
invertuoti komandos reikšmę, parašius didžiąją
raidę: pavyzdžiui, jei \d - skaitmuo,
tai \D - ne skaitmuo.
Pavyzdys
Raskime visus skaitmenis:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'! !! !!!'
Pavyzdys
Kartojimo operatoriai laiko komandas-grupes
vienetu, tai yra, grupavimo skliaustai
nereikalingi. Toliau pateiktame pavyzdyje paieškos
šablonas atrodo taip: skaitmuo nuo 0 iki 9
vieną ar daugiau kartų:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'! ! ! abc @@@'
Pavyzdys
Toliau pateiktame pavyzdyje paieškos šablonas atrodo
taip: bet kas vieną ar daugiau kartų,
bet ne skaitmuo nuo 0 iki 9:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'123!3!'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip: tarpinis simbolis vieną kartą:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'1!12!123!abc!@@@'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
NE tarpinis simbolis vieną ar daugiau kartų.
Visos eilutės, atskirtos tarpais, bus pakeistos
į '!':
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'! ! ! ! !'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
skaitmuo arba raidė vieną ar daugiau kartų.
Visos eilutės, susidedančios iš skaitmenų ir raidžių,
bus pakeistos į '!':
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'! ! ! ! @@@'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
NE skaitmuo ir NE raidė vieną ar daugiau kartų.
Pagal šį apibrėžimą mūsų atveju patenka
'@@@' ir visi tarpai (juk jie taip pat
ne skaitmenys ir ne raidės). Atkreipkite dėmesį į
tai, kad pabaigoje yra vienas '!' - į jį
paversta eilutė ' @@@' - su
tarpu priekyje:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Rezultate į kintamąjį bus įrašyta taip:
'1!12!123!Abc!'
Praktinės užduotys
Duota eilutė:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Parašykite reguliariąją išraišką, kuri ras eilutes,
kuriose iš šonų yra raidės 'a',
o tarp jų vienas skaitmuo.
Duota eilutė:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Parašykite reguliariąją išraišką, kuri ras eilutes,
kuriose iš šonų yra raidės 'a',
o tarp jų bet koks skaitmenų kiekis.
Duota eilutė:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Parašykite reguliariąją išraišką, kuri ras eilutes,
kuriose iš šonų yra raidės 'a',
o tarp jų bet koks skaitmenų kiekis (taip pat
ir nulis skaitmenų, tai yra eilutė 'aa').
Duota eilutė:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Parašykite reguliariąją išraišką, kuri ras eilutes
šio tipo: iš šonų yra raidės
'a' ir 'b', o tarp jų - ne
skaitmuo.
Duota eilutė:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Parašykite reguliariąją išraišką, kuri ras eilutes
šio tipo: iš šonų yra raidės
'a' ir 'b', o tarp jų - ne
raidė ir ne skaitmuo.
Duota eilutė:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Parašykite reguliariąją išraišką, kuri pakeis visus tarpus
į '!'.