Набори от символи в регулярни изрази на PHP
Групите символи \d и \w не са
много гъвкави. Дори такава проста задача,
като намери всички букви, но не и цифри -
не може да бъде решена с тях. За такива задачи
трябва да се използват квадратни скоби, които представляват
операция ИЛИ.
Квадратните скоби заместват един символ,
който и да е от изброените вътре. Например,
ето така: #x[abc]x# - казваме, че
отстрани трябва да има букви x, а вътре
- един символ: или 'a', или 'b',
или 'c'.
След квадратните скоби могат да се пишат оператори
за повторение. Например, ето така: #x[abc]+x#
- казваме, че между x-овете може да има
произволен брой символи 'a', 'b'
и 'c' - във всякакви комбинации.
Може не само да се изброяват символи, но и да се създават
групи от символи, като се запише тире между два символа.
Например, ето така: #[a-d]#
- получаваме всички символи от 'a' до
'd'.
Нека да разгледаме примери.
Пример
В този пример шаблонът за търсене изглежда така:
между x-ове всяка буква от 'a'
до 'z':
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
В резултат в променливата ще бъде записано следното:
'! ! ! x@x'
Пример
В този пример шаблонът за търсене изглежда така:
между x-ове всяка буква от 'a'
до 'k':
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
В резултат в променливата ще бъде записано следното:
'! ! xmx x@x'
Пример
В този пример шаблонът за търсене изглежда така:
между x-ове всяка буква от 'A'
до 'Z':
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
В резултат в променливата ще бъде записано следното:
'xax ! xcx x@x'
Пример
В този пример шаблонът за търсене изглежда така:
между x-ове всяка цифра от 0 до 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
В резултат в променливата ще бъде записано следното:
'xax ! ! ! x@x'
Пример
В този пример шаблонът за търсене изглежда така:
между x-ове всяка цифра от 3 до 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
В резултат в променливата ще бъде записано следното:
'xax x1x ! ! x@x'
Пример
В този пример шаблонът за търсене изглежда така:
между x-ове всяка буква от 'a'
до 'z' или цифра от 1 до 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
В резултат в променливата ще бъде записано следното:
'! ! ! ! x@x'
Пример
В този пример шаблонът за търсене изглежда така:
между x-ове всяка буква от 'a'
до 'z' или буква от 'A' до
'Z':
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
В резултат в променливата ще бъде записано следното:
'! ! ! x5x x@x'
Пример
В този пример шаблонът за търсене изглежда така:
между x-ове всяка буква от 'a'
до 'z' или цифри 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
В резултат в променливата ще бъде записано следното:
'! ! ! ! x3x'
Пример
В този пример шаблонът за търсене изглежда така:
между x-ове букви от 'a' до 'z'
в количество от 1 и повече:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
В резултат в променливата ще бъде записано следното:
'xx ! ! ! x123x xa3x'
Пример
Нека направим така, че броят на буквите да може да бъде и нула:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
В резултат в променливата ще бъде записано следното:
'! ! ! x123x xa3x'
Практически задачи
Даден е низ:
<?php
$str = 'aba aea aca aza axa';
?>
Напишете регулярен израз, който ще намери по следния
шаблон: отстрани има букви 'a',
а между тях - буква 'b', 'e'
или 'x'.
Даден е низ:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
Напишете регулярен израз, който ще намери по следния
шаблон: отстрани има букви 'a',
а между тях - цифра от 3-ти до 6-ти.
Даден е низ:
<?php
$str = 'aba aea afa aha aga';
?>
Напишете регулярен израз, който ще намери по следния
шаблон: отстрани има букви 'a',
а между тях - буква от a до g.
Даден е низ:
<?php
$str = 'aba aea afa aha aga';
?>
Напишете регулярен израз, който ще намери по следния
шаблон: отстрани има букви 'a',
а между тях - буква от a до f и от j до z.
Даден е низ:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
Напишете регулярен израз, който ще намери по следния
шаблон: отстрани има букви 'a',
а между тях - буква от a до f и от A до D.
Даден е низ:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Напишете регулярен израз, който ще намери по следния
шаблон: отстрани има букви 'a',
а между тях - малки латински букви,
без да се засягат останалите.
Даден е низ:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Напишете регулярен израз, който ще намери по следния
шаблон: отстрани има букви 'a',
а между тях - малки и главни латински
букви, без да се засягат останалите.
Даден е низ:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
Напишете регулярен израз, който ще намери по следния
шаблон: отстрани има букви 'a',
а между тях - малки латински букви
и цифри, без да се засягат останалите.