Групи на симболи во регуларните изрази на PHP

Постојат специјални команди кои овозможуваат избор на цели групи на симболи одеднаш. Командата \d значи цифра од 0 до 9. Командата \w означува цифра, латинична буква или знак за подвлекување. Командата \s означува празно место или празен симбол: празно место, нов ред, табулација. Може да се инвертира вредноста на командата, со пишување на голема буква: на пример, ако \d - цифра, тогаш \D - не е цифра.

Пример

Ајде да ги најдеме сите цифри:

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

Како резултат во променливата ќе се запише следново:

php'! !! !!!'

Пример

Операторите за повторување ги сметаат командите-групи за едно целина, односно заградите за групирање не се потребни. Во следниот пример шаблонот за пребарување изгледа вака: цифра од 0 до 9 еден или повеќе пати:

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

Како резултат во променливата ќе се запише следново:

php'! ! ! abc @@@'

Пример

Во следниот пример шаблонот за пребарување изгледа вака: се што е можно еден или повеќе пати, но не цифра од 0 до 9:

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

Како резултат во променливата ќе се запише следново:

php'123!3!'

Пример

Во овој пример шаблонот за пребарување изгледа вака: празен симбол еднаш:

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

Како резултат во променливата ќе се запише следново:

php'1!12!123!abc!@@@'

Пример

Во овој пример шаблонот за пребарување изгледа вака: НЕ празен симбол еден или повеќе пати. Сите поднизи, разделени со празни места, ќе се заменат со '!':

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

Како резултат во променливата ќе се запише следново:

php'! ! ! ! !'

Пример

Во овој пример шаблонот за пребарување изгледа вака: цифра или буква еден или повеќе пати. Сите поднизи, составени од цифри и букви, ќе се заменат со '!':

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

Како резултат во променливата ќе се запише следново:

php'! ! ! ! @@@'

Пример

Во овој пример шаблонот за пребарување изгледа вака: НЕ цифра и НЕ буква еден или повеќе пати. Под оваа дефиниција во нашиот случај спаѓа '@@@' и сите празни места (тие исто така не се цифри и не се букви). Обрнете внимание на тоа што на крајот има еден '!' - во него се трансформираше низата ' @@@' - со празно место напред:

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

Како резултат во променливата ќе се запише следново:

php'1!12!123!Abc!'

Практични задачи

Задание 1

Дадена е низа:

php<?php
  $str = 'a1a a2a a3a a4a a5a aba aca';
?>

Напишете регуларен израз кој ќе ги најде низите, во кои на рабовите стојат букви 'a', а помеѓу нив една цифра.

Задание 2

Дадена е низа:

php<?php
  $str = 'a1a a22a a333a a4444a a55555a aba aca';
?>

Напишете регуларен израз кој ќе ги најде низите, во кои на рабовите стојат букви 'a', а помеѓу нив било кој број на цифри.

Задание 3

Дадена е низа:

php<?php
  $str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>

Напишете регуларен израз кој ќе ги најде низите, во кои на рабовите стојат букви 'a', а помеѓу нив било кој број на цифри (вклучувајќи и нула цифри, односно низата 'aa').

Задание 4

Дадена е низа:

php<?php
  $str = 'avb a1b a2b a3b a4b a5b abb acb';
?>

Напишете регуларен израз кој ќе ги најде низите од следниот вид: на рабовите стојат букви 'a' и 'b', а помеѓу нив - не е број.

Задание 5

Дадена е низа:

php<?php
  $str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>

Напишете регуларен израз кој ќе ги најде низите од следниот вид: на рабовите стојат букви 'a' и 'b', а помеѓу нив - не е буква и не е цифра.

Задание 6

Дадена е низа:

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

Напишете регуларен израз кој ќе ги замени сите празни места со '!'.