Групи на симболи во регуларните изрази на PHP
Постојат специјални команди кои овозможуваат
избор на цели групи на симболи одеднаш. Командата
\d значи цифра од 0 до 9.
Командата \w означува цифра, латинична
буква или знак за подвлекување. Командата \s
означува празно место или празен симбол:
празно место, нов ред, табулација. Може да
се инвертира вредноста на командата, со пишување на голема
буква: на пример, ако \d - цифра,
тогаш \D - не е цифра.
Пример
Ајде да ги најдеме сите цифри:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
Како резултат во променливата ќе се запише следново:
'! !! !!!'
Пример
Операторите за повторување ги сметаат командите-групи
за едно целина, односно заградите за групирање
не се потребни. Во следниот пример шаблонот за пребарување
изгледа вака: цифра од 0 до 9
еден или повеќе пати:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
Како резултат во променливата ќе се запише следново:
'! ! ! abc @@@'
Пример
Во следниот пример шаблонот за пребарување изгледа
вака: се што е можно еден или повеќе пати,
но не цифра од 0 до 9:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
Како резултат во променливата ќе се запише следново:
'123!3!'
Пример
Во овој пример шаблонот за пребарување изгледа вака: празен симбол еднаш:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
Како резултат во променливата ќе се запише следново:
'1!12!123!abc!@@@'
Пример
Во овој пример шаблонот за пребарување изгледа вака:
НЕ празен симбол еден или повеќе пати.
Сите поднизи, разделени со празни места, ќе се заменат
со '!':
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
Како резултат во променливата ќе се запише следново:
'! ! ! ! !'
Пример
Во овој пример шаблонот за пребарување изгледа вака:
цифра или буква еден или повеќе пати.
Сите поднизи, составени од цифри и букви,
ќе се заменат со '!':
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
Како резултат во променливата ќе се запише следново:
'! ! ! ! @@@'
Пример
Во овој пример шаблонот за пребарување изгледа вака:
НЕ цифра и НЕ буква еден или повеќе пати.
Под оваа дефиниција во нашиот случај спаѓа
'@@@' и сите празни места (тие исто така
не се цифри и не се букви). Обрнете внимание на
тоа што на крајот има еден '!' - во него
се трансформираше низата ' @@@' - со
празно место напред:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
Како резултат во променливата ќе се запише следново:
'1!12!123!Abc!'
Практични задачи
Дадена е низа:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
Напишете регуларен израз кој ќе ги најде низите,
во кои на рабовите стојат букви 'a',
а помеѓу нив една цифра.
Дадена е низа:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
Напишете регуларен израз кој ќе ги најде низите,
во кои на рабовите стојат букви 'a',
а помеѓу нив било кој број на цифри.
Дадена е низа:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
Напишете регуларен израз кој ќе ги најде низите,
во кои на рабовите стојат букви 'a',
а помеѓу нив било кој број на цифри (вклучувајќи
и нула цифри, односно низата 'aa').
Дадена е низа:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
Напишете регуларен израз кој ќе ги најде низите
од следниот вид: на рабовите стојат букви
'a' и 'b', а помеѓу нив - не
е број.
Дадена е низа:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
Напишете регуларен израз кој ќе ги најде низите
од следниот вид: на рабовите стојат букви
'a' и 'b', а помеѓу нив - не
е буква и не е цифра.
Дадена е низа:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
Напишете регуларен израз кој ќе ги замени сите празни места
со '!'.