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

Rezultate į kintamąjį bus įrašyta taip:

php'! !! !!!'

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

Rezultate į kintamąjį bus įrašyta taip:

php'! ! ! abc @@@'

Pavyzdys

Toliau pateiktame pavyzdyje paieškos šablonas atrodo taip: bet kas vieną ar daugiau kartų, bet ne skaitmuo nuo 0 iki 9:

php<?php
  $str = '123abc3@@';
  $res = preg_replace('#\D+#', '!', $str);
?>

Rezultate į kintamąjį bus įrašyta taip:

php'123!3!'

Pavyzdys

Šiame pavyzdyje paieškos šablonas atrodo taip: tarpinis simbolis vieną kartą:

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

Rezultate į kintamąjį bus įrašyta taip:

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

Rezultate į kintamąjį bus įrašyta taip:

php'! ! ! ! !'

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

Rezultate į kintamąjį bus įrašyta taip:

php'! ! ! ! @@@'

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:

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

Rezultate į kintamąjį bus įrašyta taip:

php'1!12!123!Abc!'

Praktinės užduotys

Задание 1

Duota eilutė:

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

Задание 2

Duota eilutė:

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

Задание 3

Duota eilutė:

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

Задание 4

Duota eilutė:

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

Задание 5

Duota eilutė:

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

Задание 6

Duota eilutė:

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

Parašykite reguliariąją išraišką, kuri pakeis visus tarpus į '!'.