Rakstzīmju kopas PHP regulārajās izteiksmēs
Rakstzīmju grupas \d un \w nav
ļoti elastīgas. Pat tāds vienkāršs uzdevums
kā atrast visas burtus, bet ne ciparus -
nevar ar tām atrisināt. Šādiem uzdevumiem
jāizmanto kvadrātiekavas, kas apzīmē
darbību VAI.
Kvadrātiekavas aizstāj vienu rakstzīmi,
jebkuru no iekšā uzskaitītajiem. Piemēram,
šādi: #x[abc]x# - mēs sakām, ka
malās jāatrodas burtiem x, bet iekšā
- viena rakstzīme: vai 'a', vai 'b',
vai 'c'.
Pēc kvadrātiekavām var rakstīt atkārtojuma
operatorus. Piemēram, šādi: #x[abc]+x#
- mēs sakām, ka starp x var būt
jebkurš skaits rakstzīmju 'a', 'b'
un 'c' - jebkādās kombinācijās.
Var ne tikai uzskaitīt rakstzīmes, bet izveidot
rakstzīmju grupas, ierakstot starp divām rakstzīmēm
defisi. Piemēram, šādi: #[a-d]#
- mēs iegūstam visas rakstzīmes no 'a' līdz
'd'.
Apskatīsim piemēros.
Piemērs
Šajā piemērā meklēšanas veidne izskatās šādi:
starp x jebkurš burts no 'a'
līdz 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! ! x@x'
Piemērs
Šajā piemērā meklēšanas veidne izskatās šādi:
starp x jebkurš burts no 'a'
līdz 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! xmx x@x'
Piemērs
Šajā piemērā meklēšanas veidne izskatās šādi:
starp x jebkurš burts no 'A'
līdz 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'xax ! xcx x@x'
Piemērs
Šajā piemērā meklēšanas veidne izskatās šādi:
starp x jebkurš cipars no 0 līdz 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'xax ! ! ! x@x'
Piemērs
Šajā piemērā meklēšanas veidne izskatās šādi:
starp x jebkurš cipars no 3 līdz 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'xax x1x ! ! x@x'
Piemērs
Šajā piemērā meklēšanas veidne izskatās šādi:
starp x jebkurš burts no 'a'
līdz 'z' vai cipars no 1 līdz 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! ! ! x@x'
Piemērs
Šajā piemērā meklēšanas veidne izskatās šādi:
starp x jebkurš burts no 'a'
līdz 'z' vai burts no 'A' līdz
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! ! x5x x@x'
Piemērs
Šajā piemērā meklēšanas veidne izskatās šādi:
starp x jebkurš burts no 'a'
līdz 'z' vai cipari 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! ! ! x3x'
Piemērs
Šajā piemērā meklēšanas veidne izskatās šādi:
starp x burti no 'a' līdz 'z'
daudzumā no 1 vai vairāk:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'xx ! ! ! x123x xa3x'
Piemērs
Padarīsim tā, lai burtu daudzums varētu būt arī nulle:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
Rezultātā mainīgajā ierakstīsies sekojošais:
'! ! ! x123x xa3x'
Praktiskie uzdevumi
Dota virkne:
<?php
$str = 'aba aea aca aza axa';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs pēc šādas
veidnes: malās atrodas burti 'a',
bet starp tiem - burts 'b', 'e'
vai 'x'.
Dota virkne:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs pēc šādas
veidnes: malās atrodas burti 'a',
bet starp tiem - cipars no 3 līdz 6.
Dota virkne:
<?php
$str = 'aba aea afa aha aga';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs pēc šādas
veidnes: malās atrodas burti 'a',
bet starp tiem - burts no a līdz g.
Dota virkne:
<?php
$str = 'aba aea afa aha aga';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs pēc šādas
veidnes: malās atrodas burti 'a',
bet starp tiem - burts no a līdz f un no j līdz z.
Dota virkne:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs pēc šādas
veidnes: malās atrodas burti 'a',
bet starp tiem - burts no a līdz f un no A līdz D.
Dota virkne:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs pēc šādas
veidnes: malās atrodas burti 'a',
bet starp tiem - mazie latīņu burti,
neietekmējot pārējos.
Dota virkne:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs pēc šādas
veidnes: malās atrodas burti 'a',
bet starp tiem - mazie un lielie latīņu
burti, neietekmējot pārējos.
Dota virkne:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Uzrakstiet regulāro izteiksmi, kas atradīs pēc šādas
veidnes: malās atrodas burti 'a',
bet starp tiem - mazie latīņu burti
un cipari, neietekmējot pārējos.