Simbolių rinkiniai PHP reguliariosiose išraiškose
Simbolių grupės \d ir \w nėra
labai lankstūs. Net toks paprastas uždavinys,
kaip rasti visas raides, bet ne skaičius -
negali būti išspręstas jomis. Tokiems uždaviniams
reikėtų naudoti laužtinius skliaustus, kurie atstovauja
ARBA operaciją.
Laužtiniai skliaustai pakeičia vieną simbolį,
bet kurį iš išvardintų viduje. Pavyzdžiui,
štai taip: #x[abc]x# - mes sakome, kad
iš šonų turi būti raidės x, o viduje
- vienas simbolis: arba 'a', arba 'b',
arba 'c'.
Po laužtinių skliaustų galima rašyti kartojimo
operatorius. Pavyzdžiui, štai taip: #x[abc]+x#
- mes sakome, kad tarp x gali būti
bet koks simbolių 'a', 'b'
ir 'c' kiekis - bet kokiuose deriniuose.
Galima ne tik išvardinti simbolius, bet ir kurti
simbolių grupes, rašant tarp dviejų simbolių
brūkšnį. Pavyzdžiui, štai taip: #[a-d]#
- mes gauname visus simbolius nuo 'a' iki
'd'.
Pažiūrėkime pavyzdžiais.
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
tarp x bet kuri raidė nuo 'a'
iki 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'! ! ! x@x'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
tarp x bet kuri raidė nuo 'a'
iki 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'! ! xmx x@x'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
tarp x bet kuri raidė nuo 'A'
iki 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'xax ! xcx x@x'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
tarp x bet koks skaičius nuo 0 iki 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'xax ! ! ! x@x'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
tarp x bet koks skaičius nuo 3 iki 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'xax x1x ! ! x@x'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
tarp x bet kuri raidė nuo 'a'
iki 'z' arba skaičius nuo 1 iki 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'! ! ! ! x@x'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
tarp x bet kuri raidė nuo 'a'
iki 'z' arba raidė nuo 'A' iki
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'! ! ! x5x x@x'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
tarp x bet kuri raidė nuo 'a'
iki 'z' arba skaičiai 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'! ! ! ! x3x'
Pavyzdys
Šiame pavyzdyje paieškos šablonas atrodo taip:
tarp x raidės nuo 'a' iki 'z'
kiekis nuo 1 ir daugiau:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'xx ! ! ! x123x xa3x'
Pavyzdys
Padarykime taip, kad raidžių kiekis galėtų būti ir nulis:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta taip:
'! ! ! x123x xa3x'
Praktiniai uždaviniai
Duota eilutė:
<?php
$str = 'aba aea aca aza axa';
?>
Parašykite reguliariąją išraišką, kuri ras pagal šį
šabloną: iš šonų stovi raidės 'a',
o tarp jų - raidė 'b', 'e'
arba 'x'.
Duota eilutė:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Parašykite reguliariąją išraišką, kuri ras pagal šį
šabloną: iš šonų stovi raidės 'a',
o tarp jų - skaičius nuo 3-ų iki 6-ų.
Duota eilutė:
<?php
$str = 'aba aea afa aha aga';
?>
Parašykite reguliariąją išraišką, kuri ras pagal šį
šabloną: iš šonų stovi raidės 'a',
o tarp jų - raidė nuo a iki g.
Duota eilutė:
<?php
$str = 'aba aea afa aha aga';
?>
Parašykite reguliariąją išraišką, kuri ras pagal šį
šabloną: iš šonų stovi raidės 'a',
o tarp jų - raidė nuo a iki f ir nuo j iki z.
Duota eilutė:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Parašykite reguliariąją išraišką, kuri ras pagal šį
šabloną: iš šonų stovi raidės 'a',
o tarp jų - raidė nuo a iki f ir nuo A iki D.
Duota eilutė:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Parašykite reguliariąją išraišką, kuri ras pagal šį
šabloną: iš šonų stovi raidės 'a',
o tarp jų - mažosios lotyniškos raidės,
neliesdamos kitų.
Duota eilutė:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Parašykite reguliariąją išraišką, kuri ras pagal šį
šabloną: iš šonų stovi raidės 'a',
o tarp jų - mažosios ir didžiosios lotyniškos
raidės, neliesdamos kitų.
Duota eilutė:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Parašykite reguliariąją išraišką, kuri ras pagal šį
šabloną: iš šonų stovi raidės 'a',
o tarp jų - mažosios lotyniškos raidės
ir skaičiai, neliesdamos kitų.