Группы символов \d
и \w
не
очень гибкие. Даже такая простая задача,
как найти все буквы, но не цифры -
не может быть решена ими. Для таких задач
следует использовать квадратные скобки, представляющие
собой операцию ИЛИ
.
Квадратные скобки заменяют собой один символ,
любой из перечисленных внутри. К примеру,
вот так: #x[abc]x#
- мы говорим, что
по краям должны стоять буквы икс, а внутри
- один символ: или 'a'
, или 'b'
,
или 'c'
.
После квадратных скобок можно писать операторы
повторения. К примеру, вот так: #x[abc]+x#
- мы говорим, что внутри иксов может быть
любое количество символов 'a'
, 'b'
и 'c'
- в любых комбинациях.
Можно не только перечислять символы, но создавать
группы символов, записывая между двумя символами
дефис. К примеру, вот так: #[a-d]#
- мы получаем все символы от 'a'
до
'd'
.
Давайте посмотрим на примерах.
Пример
В данном примере шаблон поиска выглядит так:
между иксами любая буква от 'a'
до 'z'
:
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
В результате в переменную запишется следующее:
'! ! ! x@x'
Пример
В данном примере шаблон поиска выглядит так:
между иксами любая буква от 'a'
до 'k'
:
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
В результате в переменную запишется следующее:
'! ! xmx x@x'
Пример
В данном примере шаблон поиска выглядит так:
между иксами любая буква от 'A'
до 'Z'
:
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
В результате в переменную запишется следующее:
'xax ! xcx x@x'
Пример
В данном примере шаблон поиска выглядит так:
между иксами любая цифра от 0
до 9:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
В результате в переменную запишется следующее:
'xax ! ! ! x@x'
Пример
В данном примере шаблон поиска выглядит так:
между иксами любая цифра от 3
до 7:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
В результате в переменную запишется следующее:
'xax x1x ! ! 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'
Пример
В данном примере шаблон поиска выглядит так:
между иксами любая буква от 'a'
до 'z'
или буква от 'A'
до
'Z'
:
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
В результате в переменную запишется следующее:
'! ! ! x5x x@x'
Пример
В данном примере шаблон поиска выглядит так:
между иксами любая буква от 'a'
до 'z'
или цифры 1
, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
В результате в переменную запишется следующее:
'! ! ! ! x3x'
Пример
В данном примере шаблон поиска выглядит так:
между иксами буквы от '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'
,
а между ними - маленькие латинские буквы
и цифры, не затронув остальных.