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<?php
  $str = '1 12 123';
  $res = preg_replace('#\d#', '!', $str);
?>

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

php'! !! !!!'

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<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\d+#', '!', $str);
?>

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

php'! ! ! 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<?php
  $str = '123abc3@@';
  $res = preg_replace('#\D+#', '!', $str);
?>

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

php'123!3!'

Piemērs

Šajā piemērā meklēšanas šablons izskatās šādi: atstarpes simbols vienu reizi:

php<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\s#', '!', $str);
?>

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

php'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<?php
  $str = '1 12 123 abc @@@';
  $res = preg_replace('#\S+#', '!', $str);
?>

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

php'! ! ! ! !'

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<?php
  $str = '1 12 123a Abc @@@';
  $res = preg_replace('#\w+#', '!', $str);
?>

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

php'! ! ! ! @@@'

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ā:

php$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);

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

php'1!12!123!Abc!'

Praktiskie uzdevumi

Задание 1

Dota virkne:

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

Задание 2

Dota virkne:

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

Задание 3

Dota virkne:

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

Задание 4

Dota virkne:

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

Задание 5

Dota virkne:

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

Задание 6

Dota virkne:

php<?php
  $str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>

Uzrakstiet regulāro izteiksmi, kas aizvietos visas atstarpes ar '!'.