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

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

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

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

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

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

<?php
$stroka="текст 123";
if(preg_match("/(123)/",$stroka))
{
echo "Подстрока в тексте найдена";
}
else echo "Подстрока в тексте не найдена";
?>

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

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

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

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

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

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

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

<?php
$stroka="текст (123)";
if(preg_match("/\(123\)/",$stroka))
{
echo "Подстрока в тексте найдена";
}
else echo "Подстрока в тексте не найдена";

?>

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

Другие

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

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

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

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

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

<?php
$name2="ович";
echo "Богатый мужик - Абрам{$name2}. <br/>";
?>

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

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

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее
Самые свежие новости IT и веб-разработки на нашем Telegram-канале

Хотите изучить регулярные выражения на PHP?

Прямо сейчас посмотрите 12-ти часовой курс по регулярным выражениям на PHP!

Смотреть курс

Метки:

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

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

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree