Регулярные выражения PHP
Регулярное выражение — это последовательность символов, которая образует шаблон поиска. Когда вы ищете данные в тексте, вы можете использовать этот шаблон поиска, чтобы описать то, что вы ищете.
Регулярное выражение может быть одним символом или более сложным шаблоном.
Регулярные выражения можно использовать для выполнения всех типов операций поиска текста и замены текста.
Синтаксис регулярных выражений
В PHP регулярные выражения представляют собой строки, состоящие из разделителей, шаблона и необязательных модификаторов.
Синтаксис
"/pattern/modifiers"
- разделители - символы, которые заключают шаблон (например,
/) - шаблон - последовательность символов для поиска
- модификаторы - как выполняется поиск (например,
iуказывает на поиск без учёта регистра)
Посмотрите на следующее регулярное выражение:
$exp = "/schoolsw3/i";
Здесь / — это разделитель, schoolsw3 — это шаблон для поиска,
а i — это модификатор, который делает поиск нечувствительным к регистру.
Разделителем может быть любой символ, не являющийся буквой, цифрой, обратной косой чертой или пробелом. Наиболее распространённым разделителем является косая черта (/), но когда ваш шаблон содержит косые черты, удобно выбирать другие разделители, такие как # или ~.
Модификаторы регулярных выражений
Модификаторы определяют, как выполняется поиск.
| Модификатор | Описание | Попробуйте сами |
|---|---|---|
| i | Выполняет поиск без учёта регистра | Попробуйте сами » |
| m | Выполняет многострочный поиск (шаблоны, которые ищут совпадение в начале или конце строки, теперь будут соответствовать началу или концу каждой строки) | Попробуйте сами » |
| u | Обеспечивает правильное сопоставление шаблонов в кодировке UTF-8 |
Шаблоны регулярных выражений
Скобки используются для поиска диапазона символов:
| Выражение | Описание | Попробуйте сами |
|---|---|---|
| [abc] | Найти один или несколько символов внутри скобок | Попробуйте сами » |
| [^abc] | Найти любой символ НЕ между скобками | Попробуйте сами » |
| [a-z] | Найти любой символ алфавитно между двумя буквами | Попробуйте сами » |
| [A-z] | Найти любой символ алфавитно между указанной заглавной буквой и указанной строчной буквой | Попробуйте сами » |
| [A-Z] | Найти любой символ алфавитно между двумя заглавными буквами | Попробуйте сами » |
| [123] | Найти одну или несколько цифр внутри скобок | Попробуйте сами » |
| [0-5] | Найти любые цифры между двумя числами | Попробуйте сами » |
| [0-9] | Найти любые цифры | Попробуйте сами » |
Метасимволы
Метасимволы — это символы со специальным значением:
| Метасимвол | Описание | Попробуйте сами |
|---|---|---|
| | | Найти совпадение для любого из шаблонов, разделённых |, например: cat|dog|fish | Попробуйте сами » |
| . | Найти любой символ | Попробуйте сами » |
| ^ | Находит совпадение в начале строки, например: ^Hello | Попробуйте сами » |
| $ | Находит совпадение в конце строки, например: World$ | Попробуйте сами » |
| \d | Найти любые цифры | Попробуйте сами » |
| \D | Найти любые не-цифры | Попробуйте сами » |
| \s | Найти любой пробельный символ | Попробуйте сами » |
| \S | Найти любой непробельный символ | Попробуйте сами » |
| \w | Найти любую букву алфавита (a–Z) и цифру (0–9) | Попробуйте сами » |
| \W | Найти любой не-алфавитный и не-цифровой символ | Попробуйте сами » |
| \b | Найти совпадение в начале слова, например: \bWORD, или в конце слова, например: WORD\b | Попробуйте сами » |
| \uxxxx | Найти символ Unicode, указанный шестнадцатеричным числом xxxx | Попробуйте сами » |
Квантификаторы
Квантификаторы определяют количества:
| Квантификатор | Описание | Попробуйте сами |
|---|---|---|
| n+ | Соответствует любой строке, которая содержит хотя бы один n | Попробуйте сами » |
| n* | Соответствует любой строке, которая содержит ноль или более вхождений n | |
| n? | Соответствует любой строке, которая содержит ноль или одно вхождение n | |
| n{3} | Соответствует любой строке, которая содержит последовательность из 3 n | Попробуйте сами » |
| n{2, 5} | Соответствует любой строке, которая содержит последовательность как минимум из 2, но не более 5 n | Попробуйте сами » |
| n{3,} | Соответствует любой строке, которая содержит последовательность как минимум из 3 n | Попробуйте сами » |
Примечание: Если вашему выражению нужно найти один из специальных символов, вы можете использовать обратную косую черту ( \ ), чтобы экранировать их. Например, чтобы найти один или несколько вопросительных знаков, вы можете использовать следующее выражение: $pattern = '/\?+/';