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<?php
  $str = 'xax xbx xcx x@x';
  $res = preg_replace('#x[a-z]x#', '!', $str);
?>

Rezultātā mainīgajā ierakstīsies sekojošais:

php'! ! ! x@x'

Piemērs

Šajā piemērā meklēšanas veidne izskatās šādi: starp x jebkurš burts no 'a' līdz 'k':

php<?php
  $str = 'xax xbx xmx x@x';
  $res = preg_replace('#x[a-k]x#', '!', $str);
?>

Rezultātā mainīgajā ierakstīsies sekojošais:

php'! ! xmx x@x'

Piemērs

Šajā piemērā meklēšanas veidne izskatās šādi: starp x jebkurš burts no 'A' līdz 'Z':

php<?php
  $str = 'xax xBx xcx x@x';
  $res = preg_replace('#x[A-Z]x#', '!', $str);
?>

Rezultātā mainīgajā ierakstīsies sekojošais:

php'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<?php
  $str = 'xax x1x x3x x5x x@x';
  $res = preg_replace('#x[0-9]x#', '!', $str);
?>

Rezultātā mainīgajā ierakstīsies sekojošais:

php'xax ! ! ! x@x'

Piemērs

Šajā piemērā meklēšanas veidne izskatās šādi: starp x jebkurš cipars no 3 līdz 7:

php<?php
  $str = 'xax x1x x3x x5x x@x';
  $res = preg_replace('#x[3-7]x#', '!', $str);
?>

Rezultātā mainīgajā ierakstīsies sekojošais:

php'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<?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:

php'! ! ! ! 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<?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:

php'! ! ! 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<?php
  $str = 'xax xbx x1x x2x x3x';
  $res = preg_replace('#x[a-z12]x#', '!', $str);
?>

Rezultātā mainīgajā ierakstīsies sekojošais:

php'! ! ! ! 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<?php
  $str = 'xx xabesx xaadx x123x xa3x';
  $res = preg_replace('#x[a-z]+x#', '!', $str);
?>

Rezultātā mainīgajā ierakstīsies sekojošais:

php'xx ! ! ! x123x xa3x'

Piemērs

Padarīsim tā, lai burtu daudzums varētu būt arī nulle:

php<?php
  $str = 'xx xabesx xaadx x123x xa3x';
  $res = preg_replace('#x[a-z]*x#', '!', $str);
?>

Rezultātā mainīgajā ierakstīsies sekojošais:

php'! ! ! x123x xa3x'

Praktiskie uzdevumi

Задание 1

Dota virkne:

php<?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'.

Задание 2

Dota virkne:

php<?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.

Задание 3

Dota virkne:

php<?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.

Задание 4

Dota virkne:

php<?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.

Задание 5

Dota virkne:

php<?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.

Задание 6

Dota virkne:

php<?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.

Задание 7

Dota virkne:

php<?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.

Задание 8

Dota virkne:

php<?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.