# Наборы символов в регулярных выражениях PHP

Группы символов `\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'`, а между ними - маленькие латинские буквы и цифры, не затронув остальных.

← →
↑