Начало строки регулярное выражение php

Учебник по PHP 4

Сколько новых сайтов Вы делаете за год? результаты

Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Регулярные выражения

Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение phpПредыдущаяСледующаяНачало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Соответствие началу и концу строки

В регулярном выражении можно указать, должно ли конкретное подвыражение встречаться в начале, в конце строки или и в начале и в конце строки.

Символ ^ соответствует началу строки:

Такое выражение соответствует любой строке, начинающейся с xy. Обратите внимание, что в этом случае символ ^ ставится за пределами выражения в скобках, к примеру:

Это регулярное выражение соответствует любой строке, заканчивающейся на xy.

Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение phpПредыдущаяСледующаяНачало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Если Вам нужна частная профессиональная консультация от авторов многих книг Кузнецова М.В. и Симдянова И.В., добро пожаловать в наш Консультационный Центр SoftTime.

Источник

Регулярные выражения PHP

Что такое регулярное выражение?

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

Синтаксис регулярных выражений

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

Функции регулярных выражений

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

ФункцияОпределение
preg_match()Эта функция ищет конкретный образец в некоторой строке. Он возвращает 1 (true), если шаблон существует, и 0 (false) в противном случае.
preg_match_all()Эта функция ищет все вхождения шаблона в строке. Она возвращает количество найденных совпадений с шаблоном в строке, или 0 — если вхождений нет. Функция удобна для поиска и замены.
ereg_replace()Эта функция ищет определенный шаблон строки и возвращает новую строку, в которой совпадающие шаблоны были заменены другой строкой.
eregi_replace()Функция ведет себя как ereg_replace() при условии, что поиск шаблона не чувствителен к регистру.
preg_replace()Эта функция ведет себя как функция ereg_replace() при условии, что регулярные выражения могут использоваться как в шаблоне так и в строках замены.
preg_split()Функция ведет себя как функция PHP split(). Он разбивает строку на регулярные выражения в качестве параметров.
preg_grep()Эта функция ищет все элементы, которые соответствуют шаблону регулярного выражения, и возвращает выходной массив.
preg_quote()Эта функция принимает строку и кавычки перед каждым символом, который соответствует регулярному выражению.
ereg()Эта функция ищет строку, заданную шаблоном, и возвращает TRUE, если она найдена, иначе возвращает FALSE.
eregi()Эта функция ведет себя как функция ereg() при условии, что поиск не чувствителен к регистру.

Функция preg_match()

Функция preg_match() выполняет проверку на соответствие регулярному выражению.

Пример. Поиск подстроки «php» в строке без учета регистра:

Пример

Результат выполнения кода:

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

Примечание: Не используйте функцию preg_match(), если необходимо проверить наличие подстроки в заданной строке. Для этого используйте strpos() или strstr(), т.к. они выполнят эту задачу гораздо быстрее.

Функция preg_match_all()

Функция preg_match_all() выполняет глобальный поиск шаблона в строке.

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

Пример

Результат выполнения кода:

Функция preg_replace()

Функция preg_replace() выполняет поиск и замену по регулярному выражению.

В следующем функция выполняет поиск в строке совпадений с шаблоном pattern и заменяет их на replacement:

Пример

Результат выполнения кода:

Модификаторы регулярных выражений

Модификаторы указываются либо в скобках, например так: (?Ui), либо после закрывающего символа ‘/pattern/Ui’.

МодификаторОписание
iВыполняет поиск без учета регистра. Например «/a/i» ищет и a, и A.
mВыполняет многострочный поиск (шаблоны, которые ищут начало или конец строки, будут соответствовать началу или концу каждой строки)
uОбеспечивает правильное сопоставление шаблонов в кодировке UTF-8 (для поиска русского текста например).
UИнвертирует «жадность» (по умолчанию жадный, т.е. пытается захватить как можно большую строку, подходящую по условию).
sЕсли используется, то символ точка (.) соответствует и переводу строки. Иначе она ему не соответствует.
xИгнорировать пробелы. В этом случае пробелы нужно экранировать обратным слэшем \.

При использовании модификаторов, можно использовать знак минус (-) для отключения модификатора. Например: (?m-i) — включаем многострочный поиск и отключаем регистронезависимый.

Шаблоны регулярных выражений

Квадратные скобки ([]) используются для нахождения ряда символов:

ВыражениеОписание
[abc]Один из символов a, b, c
[^abc]Любой символ кроме a, b, c
6Любой символ из диапазона от 0 до 9
[a-zА-Я]Любой символ из диапазонов

Метасимволы

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

Одним из основных метасимволов является обратный слэш (\), который меняет тип символа, следующего за ним, на противоположный. Таким образом обычный символ можно превратить в метасимвол, а если это был метасимвол, то он теряет свое специальное значение и становится обычным символом. Этот приём нужен для того, чтобы вставлять в текст специальные символы как обычные. Например, символ d в обычном режиме не имеет никаких специальных значений, но \d — это уже метасимвол, который обозначает: «любая цифра». Символ точка (.) в обычном режиме значит — «любой единичный символ», а экранированная точка (\.) означает просто точку.

МетасимволОписаниепример
.Соответствует любому одиночному символу, кроме новой строки././ соответствует строке, состоящей из одного символа.
^Соответствует началу строки./^cars/ соответствует любой строке, которая начинается с cars.
$Соответствует шаблону в конце строки./com$/ соответствует строке, заканчивающейся на com, например gmail.com
*Соответствует 0 или более вхождений./com*/ соответствует commute, computer, compromise и т.д.
+Соответствующий предыдущему символу появляется как минимум один раз.Например, /z+oom/ соответствует zoom.
\Используется для удаления метасимволов в регулярном выражении./google\.com/ будет рассматривать точку как буквальное значение, а не как метасимвол.
a-zСоответствует строчным буквам.cars
A-ZСоответствует буквам в верхнем регистре.CARS
0-9Соответствует любому числу от 0 до 9./0-5/ соответствует 0, 1, 2, 3, 4, 5
[…]Соответствует классу символов./[pqr]/ соответствует pqr
|Разделяет перечисление альтернативных вариантов./(cat|dog|fish)/ соответствует cat или dog или fish
\dЛюбая цифра./(\d)/ соответствует цифре
\sНайти пробельный символ (в т.ч. табуляция)./(\s)/ соответствует пробелу
\bГраница слова (начало или конец)./\bWORD/ найти совпадение в начале слова

Повторения (квантификаторы)

Комбинация типа \d\d означает, что цифра должна повторяться два раза. Но бывают задачи, когда повторений очень много или мы не знаем, сколько именно. В таких члучаях нужно использовать специальные метасимволы.

Повторения символов или комбинаций описываются с помощью квантификаторов (метасимволов, которые задают количественные отношения). Есть два типа квантификаторов: общие (задаются с помощью фигурных скобок <> ) и сокращенные (сокращения наиболее распространенных квантификаторов). Фигурные скобки x <1,7>задают число повторений предыдущего символа (в этом случае выражение ищет от 1 до 7 идущих подряд букв «x»).

КвантификаторОписанте
a+Один и более раз a
a*Ноль и более раз a
a?Одна a или пусто
a

3 раза a
a

От 3 до 5 раз a
a

3 и более раз a

Группировка

Пример

Результат выполнения кода:

ВыражениеОписание
^[a-zA-Z0-9_]<1,>$Любое слово, хотя бы одна буква, число или _
+@[a-z0-9A-Z]Соответствует строке с символом @ в начале, за которым следует любая буква нижнего регистра, число от 0 до 9 или буква верхнего регистра.
([wx])([yz])wy, wz, xy, или xz
[a-z]+Один или более символов нижнего регистра

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

Источник

Шпаргалка по регулярным выражениям. В примерах

Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Jan 6, 2019 · 5 min read

Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Регулярные выражения (regex или regexp) очень эффективны для извлечения информации из текста. Для этого нужно произвести поиск одного или нескольких совпадений по определённому шаблону (т. е. определённой последовательности символов ASCII или unicode).

Области применения regex разнообразны, от валидации до парсинга/замены строк, передачи данных в другие форматы и Web Scraping’а.

Одна из любопытных особенностей регулярных выражени й в их универсальности, стоит вам выучить синтаксис, и вы сможете применять их в любом (почти) языке программирования (JavaScript, Java, VB, C #, C / C++, Python, Perl, Ruby, Delphi, R, Tcl, и многих других). Небольшие отличия касаются только наиболее продвинутых функций и версий синтаксиса, поддерживаемых движком.

Давайте начнём с нескольких примеров.

Основы

Оператор ИЛИ — | или []

Флаги

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

Средний уровень

Скобочные группы ― ()

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

Скобочные выражения ― []

Помните, что внутри скобочных выражений все специальные символы (включая обратную косую черту \ ) теряют своё служебное значение, поэтому нам ненужно их экранировать.

Жадные и ленивые сопоставления

Квантификаторы ( * + <> ) ― это «жадные» операторы, потому что они продолжают поиск соответствий, как можно глубже ― через весь текст.

Например, выражение соответствует

Продвинутый уровень

Границы слов ― \b и \B

Источник

Регулярные выражения в PHP

Чтобы найти в строке какое-то совпадение, достаточно просто записать это совпадение внутри двух слэшей.

Её использование выглядит следующим образом:

Давайте приведём пример. Найдём, слово «век» в строке «человек».

Для того, чтобы быстрее составлять регулярки, есть онлайн-сервисы. Они позволяют не переписывать шаблон и запускать каждый раз код, а делать всё это прямо в браузере. Я неоднократно пользовался сервисом https://regex101.com/ и вам его рекомендую.

Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Я ввёл в шаблон «/ку/» и строку «кукушка». В результате получил 2 совпадения.

Помимо этого у сервиса есть вкладка «Code generator», на которой вы сразу сможете получить готовый код на PHP для своего примера:
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Символы

Давайте теперь перейдём к более интересным примерам.

Давайте найдём такие совпадения для строки «кукушки не кушают шоколадки». Паттерн примет следующий вид: «/к./». То есть буква «к» и любой символ.

Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Видим, что нашлось немало совпадений. Давайте добавим теперь после точки ещё одну букву «ш».

Теперь совпадения только два.
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Нужно найти несколько подряд идущих точек? Да не вопрос! Заэкранируйте их все:
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Квантификаторы

Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Если что-то должно повториться точное число раз, например, 3, то пишется просто <3>.

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

Немного примеров:
Символ точки, повторяющийся от одного и более раз
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Восклицательный знак, перед которым либо есть вопросительный знак, либо нет
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Модификаторы

Глобальный поиск

А не обратили ли вы внимание на букву g после закрывающего слеша в паттерне?
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Видите? Теперь только одно совпадение осталось.

Жадность

Есть ещё один довольно популярный модификатор, который позволяет сделать поиск либо жадным, либо нежадным. Жадный поиск захватывает максимально возможную подстроку. Давайте рассмотрим вот такой пример:
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Видите, какую строку захватило? А если бы нам хотелось остановиться на первой букве «к»? Тогда нам просто нужно было бы сделать поиск нежадным. Для этого используется модификатор «U»
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

В PHP он при этом указывается после закрывающего слеша паттерна:

Вообще, все остальные модификаторы как и «U» указываются после слеша, это только для модификатора g пришлось сделать две разные функции.

Итак, давайте сформулируем основные тезисы по жадности и нежадности:

Классы символов

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

Когда вы используете такой класс в шаблоне, это соответствует одному из символов из этого шаблона. Не нескольким, а одному из них! Чтобы было несколько, нужно использовать квантификаторы.

Пример: двоеточие, после которого идут три цифры от 0 до 3
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Если нужно сделать отрицание, то внутри таких кавычек перед остальными ставится символ «^».

Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

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

Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Якоря в регулярных выражениях

Также нам часто приходится говорить о начале строки. Для этого есть якорь «^».
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Несмотря на то, что в строке есть два слова «кукушки», под шаблон попало только первое, так как оно находится в начале строки.

Давайте вернёмся к примеру с телефонами. В прошлый раз мы использовали шаблон «/+79<10>/». Однако, если строка содержит больше цифр в конце, то она просто отбросит лишнее.
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

По сути, этот телефон некорректный. Однако, с помощью якорей мы можем сделать так, что в строке будет только телефон, без лишней лабуды. Некорректный телефон не попадает в совпадение:
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

А корректный попадает:
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Многострочный режим

Если мы сейчас запишем несколько телефонов в разных строках, то не один не подпадёт под эту регулярку.
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

«ИЛИ» в регулярках

Для случаев, когда нам нужно использовать что-то на выбор, либо одно, либо другое, нужно использовать конструкцию вида:

Маски

Маски это очень крутая вещь в регулярках, которая используется повсеместно. Благодаря им можно не только проверить строку на соответствие шаблону, но и выделить из неё некоторые подстроки и использовать их отдельно!

Пример задачи: нужно из строки Меняем автора статьи 123 c «Иван» на «Пётр» извлечь идентификатор статьи и имена авторов.

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

Нагляднее всего это можно увидеть на примере:
Начало строки регулярное выражение php. Смотреть фото Начало строки регулярное выражение php. Смотреть картинку Начало строки регулярное выражение php. Картинка про Начало строки регулярное выражение php. Фото Начало строки регулярное выражение php

Видите, справа у нас появились дополнительные совпадения? В PHP мы можем сделать из этого отдельные переменные!

Делается это проще простого:

Соответственно, нам остаётся лишь определить переменные под всё это дело:

А ещё маске можно дать имя прямо в шаблоне, вот так:

В коде будет выглядеть вот так:

И мы можем получить id статьи вот так:

Ещё один реальный пример

Практически на любом современном сайте все адреса вида: https://php.zone/post/892

Дальше он ищет статью в базе данных с таким идентификатором и возвращает её пользователю.

Это далеко не вся инфа о регулярках, но этого достаточно для 95% решения реальных задач. Забивать голову остальным и упарываться не советую 🙂

Домашка

У вас есть переменная

С помощью регулярных выражений выдерните из этой переменной 2 значения и положите их в переменные:

Источник

Шпаргалка по регулярным выражениям

Квантификаторы

АналогПримерОписание
?a?одно или ноль вхождений «а»
+a+одно или более вхождений «а»
*a*ноль или более вхождений «а»

Модификаторы

Символ «минус» (-) меред модификатором (за исключением U) создаёт его отрицание.

Спецсимволы

АналогОписание
()подмаска, вложенное выражение
[]групповой символ
количество вхождений от «a» до «b»
|логическое «или», в случае с односимвольными альтернативами используйте []
\экранирование спец символа
.любой сивол, кроме перевода строки
\d1десятичная цифра
\D[^\d]любой символ, кроме десятичной цифры
\fконец (разрыв) страницы
\nперевод строки
\pLбуква в кодировке UTF-8 при использовании модификатора u
\rвозврат каретки
\s[ \t\v\r\n\f]пробельный символ
\S[^\s]любой символ, кроме промельного
\tтабуляция
\w[0-9a-z_]любая цифра, буква или знак подчеркивания
\W[^\w]любой символ, кроме цифры, буквы или знака подчеркивания
\vвертикальная табуляция

Спецсимволы внутри символьного класса

ПримерОписание
^[^da]отрицание, любой символ кроме «d» или «a»
[a-z]интервал, любой симво от «a» до «z»

Позиция внутри строки

Якоря

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

Здесь символ ^ обозначает начало строки. Без него шаблон соответствовал бы любой строке, содержащей цифру.

Символьные классы

Символьные классы в регулярных выражениях соответствуют сразу некоторому набору символов. Например, \d соответствует любой цифре от 0 до 9 включительно, \w соответствует буквам и цифрам, а \W — всем символам, кроме букв и цифр. Шаблон, идентифицирующий буквы, цифры и пробел, выглядит так:

POSIX

POSIX — это относительно новое дополнение семейства регулярных выражений. Идея, как и в случае с символьными классами, заключается в использовании сокращений, представляющих некоторую группу символов.

Утверждения

Поначалу практически у всех возникают трудности с пониманием утверждений, однако познакомившись с ними ближе, вы будете использовать их довольно часто. Утверждения предоставляют способ сказать: «я хочу найти в этом документе каждое слово, включающее букву “q”, за которой не следует “werty”».

Итак, парсер проверяет несколько следующих символов по предложенному шаблону ( werty ). Если они найдены, то утверждение ложно, а значит символ q будет «проигнорирован», т. е. не будет соответствовать шаблону. Если же werty не найдено, то утверждение верно, и с q все в порядке. Затем продолжается поиск любых символов, кроме пробела ( [^\s]* ).

Кванторы

Кванторы позволяют определить часть шаблона, которая должна повторяться несколько раз подряд. Например, если вы хотите выяснить, содержит ли документ строку из от 10 до 20 (включительно) букв «a», то можно использовать этот шаблон:

Этот шаблон соответствует тексту, заключенному в двойные кавычки. Однако, ваша исходная строка может быть вроде этой:

Приведенный выше шаблон найдет в этой строке вот такую подстроку:

Он оказался слишком жадным, захватив наибольший кусок текста, который смог.

Экранирование в регулярных выражениях

Знак экранирования, предшествующий символу вроде точки, заставляет парсер игнорировать его функцию и считать обычным символом. Есть несколько символов, требующих такого экранирования в большинстве шаблонов и языков. Вы можете найти их в правом нижнем углу шпаргалки («Мета-символы»).

Шаблон для нахождения точки таков:

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

Спецсимволы экранирования в регулярных выражениях

Подстановка строк

Подстановка строк подробно описана в следующем параграфе «Группы и диапазоны», однако здесь следует упомянуть о существовании «пассивных» групп. Это группы, игнорируемые при подстановке, что очень полезно, если вы хотите использовать в шаблоне условие «или», но не хотите, чтобы эта группа принимала участие в подстановке.

Группы и диапазоны

Группы и диапазоны очень-очень полезны. Вероятно, проще будет начать с диапазонов. Они позволяют указать набор подходящих символов. Например, чтобы проверить, содержит ли строка шестнадцатеричные цифры (от 0 до 9 и от A до F), следует использовать такой диапазон:

Чтобы проверить обратное, используйте отрицательный диапазон, который в нашем случае подходит под любой символ, кроме цифр от 0 до 9 и букв от A до F:

Группы наиболее часто применяются, когда в шаблоне необходимо условие «или»; когда нужно сослаться на часть шаблона из другой его части; а также при подстановке строк.

Использовать «или» очень просто: следующий шаблон ищет «ab» или «bc»:

Первым параметром будет примерно такой шаблон (возможно вам понадобятся несколько дополнительных символов для этой конкретной функции):

Он найдет любые вхождения слова «wish» вместе с предыдущим и следующим символами, если только это не буквы или цифры. Тогда ваша подстановка может быть такой:

Модификаторы шаблонов

Модификаторы шаблонов используются в нескольких языках, в частности, в Perl. Они позволяют изменить работу парсера. Например, модификатор i заставляет парсер игнорировать регистры.

Регулярные выражения в Perl обрамляются одним и тем же символом в начале и в конце. Это может быть любой символ (чаще используется «/»), и выглядит все таким образом:

Модификаторы добавляются в конец этой строки, вот так:

Мета-символы

Наконец, последняя часть таблицы содержит мета-символы. Это символы, имеющие специальное значение в регулярных выражениях. Так что если вы хотите использовать один из них как обычный символ, то его необходимо экранировать. Для проверки наличия скобки в тексте, используется такой шаблон:

Шпаргалка представляет собой общее руководство по шаблонам регулярных выражений без учета специфики какого-либо языка. Она представлена в виде таблицы, помещающейся на одном печатном листе формата A4. Создана под лицензией Creative Commons на базе шпаргалки, автором которой является Dave Child. Скачать в PDF, PNG.

Источник

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

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