Разгребаем «кашу»: PHP регулярные выражения скобки и метасимволы

PHP регулярные выражения скобки и метасимволы

От автора: продолжаем начатый экскурс в символьную «составляющую» изучаемого языка. Сегодня мы узнаем, для чего используются в PHP регулярные выражения скобки.

Не обычные, а метасимволы!

Нам опять не повезло, потому что скобки в регулярках тоже являются метасимволами, и их применение требует внимания и знания особенностей их использования. Чтобы быстрее понималось, начнем с примера.

Предположим, что нужно найти в тексте подстроку, состоящую из конкретного сочетания цифр, заключенных в овальные скобки. Пытаемся:

PHP регулярные выражения скобки и метасимволы

Вроде бы все правильно работает! Но только на первый взгляд. Немного изменим содержание строки: текст 1234

PHP регулярные выражения скобки и метасимволы

И снова код выдает сообщение о том, что подстрока найдена. Хотя нас интересует подстрока (123). Что же не так с используемой регуляркой? Смотрим на нее: /(123)/

Вспоминаем, что и фигурные, и овальные скобки расцениваются PHP как метасимволы. Поэтому их нужно экранировать. Чего мы не сделали. Этот паттерн задает для поиска группу символов, состоящую из цифр, потому что используемые здесь метасимволы («()») предназначены для группировки символов для поиска.

Правильное регулярное выражение с экранированными скобками: /\(123\)/

PHP регулярные выражения скобки и метасимволы

Другие

Теперь поговорим о других скобках – квадратных («[ ]»). В шаблонах регулярок они интерпретируются ядром PHP как метасимвол. Значения, указанные внутри них, задают подмножество (диапазон) для поиска. Если их использовать в предыдущем примере, то регулярный паттерн будет выглядеть следующим образом: /[1-3]/

Также такие скобки применяются в языке для инициализации массива. Упрощенный синтаксис поддерживает версией PHP 5.4 и выше.

Фигурные скобки в регулярках задают число повторений искомого значения. В следующем примере в скобках шаблона указывается, что символ a должен повторяться три и более раз.

PHP регулярные выражения скобки и метасимволы

Также «фигуристые» скобки используются для «дописывания» значений переменных следующим образом:

PHP регулярные выражения скобки и метасимволы

И вообще, советую быть внимательнее при использовании различных спецсимволов. Даже в рамках одной программной платформы или CMS они могут интерпретироваться по-разному. Что часто является причиной различных «специфических» багов. Например, как проблема с index route account register в OpenCart. Но это уже другая история :).

Метки:

Похожие статьи:

Комментарии Вконтакте: