регулярные выражения спецсимволы php

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

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

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

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

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

Спецсимволы

АналогОписание
()подмаска, вложенное выражение
[]групповой символ
количество вхождений от «a» до «b»
|логическое «или», в случае с односимвольными альтернативами используйте []
\экранирование спец символа
.любой сивол, кроме перевода строки
\d3десятичная цифра
\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.

Источник

Регулярные выражения в 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

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

Давайте вернёмся к примеру с телефонами. В прошлый раз мы использовали шаблон «/+76<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 значения и положите их в переменные:

Источник

Регулярные выражения. Часть 1. Введение. Специальные символы.

Наконец-то я добрался до этой статьи, в ней я попытаюсь с нуля рассказать про регулярные выражения в PHP. Для начала — что это такое?

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

Основы основ

Как я уже сказал, начну с самого нуля. Недаром же я пометил эту статью тегом «Начинающим».

А начинается всё со строки в PHP.

Если нам сперва нужно определить, находится ли abc внутри нашей строки, и только тогда вывести её, то попробуем сделать что-то подобное:

Небольшое отступление про русские буквы

Хочу обратить ваше внимание, регулярные выражения PHP по умолчанию не поддерживают русские буквы и поэтому далеко не все примеры будут работать корректно, однако это легко исправляется модификатором /u (дальше всё объясню), который включает дополнительную функциональность: шаблон и строки станут обрабатываться как UTF-8 (доступно с версии PHP 4.1.0).

Подробно в следующем примере.

Верхний регистр букв

Поиск соответствия в начале строки, символ ^

Проще простого, верно ведь?

Специальные символы (метасимволы)

Как видите в данном случае функция метасимвола + проигнорировалось и он был воспринят как обычный символ плюса в строке.

Квадратные скобки [ ]

Итак, квадратные скобки позволяют указать набор символов в шаблоне, которые могут быть просто перечислены [абвгд], либо заданы промежутком [а-д].

Обратите внимание, что такие интервалы символов означают только 1 символ, принадлежащий этому интервалу.

Этот пример вернет 1 как для «маг», так и например для «миг».

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

Фигурные скобки

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

Астериск *

Звёздочка означает любое количество символа, стоящего перед ней (в том числе 0). Поясню на примере.

Знак вопроса — это один символ стоящий перед ним, либо его отсутствие. Например, им очень удобно проверять телефонные номера (как вы знаете, иногда в номерах указываются дефисы, а иногда нет).

Круглые скобки ( ) и прямая черта |

Данный набор символов позволяет задать несколько логических условий ИЛИ.

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

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Источник

Регулярные выражения. Всё проще, чем кажется

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

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

Содержание

Что такое регулярка и с чем ее едят?

Где писать регулярки?

Самые простые регулярки

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

Lookahead и lookbehind (опережающая и ретроспективная проверки)

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

Что такое регулярка и с чем ее едят?

Если по простому, регулярка- это некий шаблон, по которому фильтруется текст. Мы можем написать нужный нам шаблон (регулярку) и таким образом искать в тексте необходимые нам символы, слова и т.д. Также их используют, например, при заполнении поля E-mail на различных сайтах, т.е. создают шаблон по типу: someEmail@gmail.com. Это я взял как пример, не более. Теперь, разобравшись, что это, приступим к изучению. Обещаю, скучно не будет)

Где писать регулярки?

Регулярки мы можем писать как на специальных сайтах, так и используя какой-либо язык программирования. Синтаксис (правила написания регулярок) не привязан к какому-то отдельному языку программирования. Поэтому, изучив регулярные выражения, вы сможете пользоваться ими где захотите. Сначала, в рамках изучения, воспользуемся отличным сайтом, а как писать регулярные выражения в различных языках программирования, рассмотрим чуточку позже.

Сразу дам ссылку на сайт, чтобы вы могли уже писать вместе со мной https://www.regextester.com/

Коротко о том, как пользоваться сайтом. Сверху, в графе Regular Expression вы пишете само регулярное выражение, а под ним, в графе Test String вы пишете строку, которую вы хотите фильтровать. Если были найдены соответствия между регулярным выражением и текстом, в тексте эти соответствия будут помечены синим цветом, вы их сразу увидите, даже не сомневайтесь.

Самые простые регулярки

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

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

Вот и всё, надеюсь вы поняли регулярные выражения, спасибо за внимание.

Шутка конечно, это далеко не всё. Например, мы можем написать одну букву t, и он найдет все буквы t в тексте.

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

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

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

Понимаю, звучит страшно, но на деле все просто. Сейчас разберемся.

С помощью квантификаторов мы можем указывать сколько раз должен повторяться тот или иной символ (ну или группа символов). Ниже приведу список квантификаторов с пояснением, а дальше попрактикуемся с ними.

— символ повторяется ровно n раз

— символ повторяется в диапазоне от m до n раз

— символ повторяется минимум m раз (от m и более)

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

Почему же он взял еще ssss? Он взял не совсем его, а лишь его часть, так как в нем тоже есть 3 буквы s подряд. Дело в том, что регулярка не будет учитывать, отдельное это слово или нет. Пробелы тоже идут как символы! Поэтому будет выбран любой фрагмент, которому соответствует 3 идущие подряд буквы s

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

Интересный момент получается, он выбрал все. Почему же? Ответ: та же ситуация, что и в прошлый раз. Он увидел ssss, взял 3 идущие подряд s вместе и еще одну s, которая рядом, ведь она тоже соответствует регулярку (а ведь мы помним, что мы указали диапазон от одного до трех раз)

Ну и напоследок, давайте напишем шаблон, где символ s будет повторяться минимум три раза. Для этого напишем следующее: s ( <3,>обозначает, что символ s будет повторяться от трех раз и до бесконечности).

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

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

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

Давайте разбираться. Начнем со знака вопроса. Допустим у нас есть строка colour color и мы хотим найти либо colour, либо color. Мы можем написать так: colou?r.

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

Давайте изменим строку и напишем что-то по типу colouuuuur color. И допустим мы хотим указать, что u должен либо не быть, либо быть сколько угодно раз. Для этого мы можем написать colou*r.

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

То есть либо u у нас нет, либо повторяется много раз.

Символ + работает почти также, за исключением того, что символ должен повторяться минимум 1 раз. То есть в данном случае слово color не будет соответствовать, так как там u не присутствует (то есть повторяется 0 раз, а у нас символ должен повторяться минимум 1 раз)

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

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

Теперь поговорим о специальных символах, которые используются в регулярках. Тут все очень просто, так что можете сильно не переживать. Скрины прикреплять буду здесь не везде (тогда статья разрастется до безумных размеров). Так что заранее прошу меня понять и простить и попробовать сами.

Поговорим об одиночном символе. Это значит, что будет выбираться любой символ, который повторяется только один раз. Например, вернемся к нашей строке Some text и выберем букву t, после которой идет любой символ. Для этого напишем t.

Выберется te, так как после t идет один любой символ (в данном случае е)

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

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

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

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

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

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

Перейдем к экранированию. Звучит страшно, но на деле все проще простого. Например, в тексте some text. мы хотим выделить точку. Но ведь точка у нас уже зарезервирована как специальный символ (напоминаю, точка обозначает любой одиночный символ). И чтобы сделать так, чтобы точка на считалась как спец. символ мы можем написать \. и тем самым говоря, что точка у нас будет как обычный символ.

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

Теперь идут, простые вещи. \d у нас обозначает любую цифру. Например в тексте some text123, если написать \d у нас будут выделяться только цифры.

\D делает все наоборот: берутся все символы, кроме цифр. То есть, если написать \D будет браться все, кроме цифр (и пробелы, кстати, тоже).

\w берет буквы, а \W берет, все, кроме букв (в том числе и пробелы).

Теперь расскажу про еще одно применение символа ^. Его можно использовать как отрицание, тем самым исключая символ или группу символов. Например, в слове test мы хотим выбрать все, кроме буквы t и для этого мы можем написать так: [^t]

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

Именно в такой последовательности символ ^ будет обозначать отрицание.

Lookahead и lookbehind (опережающая и ретроспективная проверки)

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

Также мы можем сделать наоборот и выбрать символ s, если после него НЕ идет символ d. Для этого вместо знака равно мы должны поставить восклицательный знак (!), т.е. написать вот так: s(?!d)

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

Теперь поговорим о lookbehind. Допустим, у нас есть строка s ws ds ts es и мы хотим выбрать символ s, до которого будет символ d. Для этого мы можем написать так: (? регулярные выражения спецсимволы php. Смотреть фото регулярные выражения спецсимволы php. Смотреть картинку регулярные выражения спецсимволы php. Картинка про регулярные выражения спецсимволы php. Фото регулярные выражения спецсимволы php

Почему же lookbehind подчеркивается красной линией? Дело в том, что lookbehind не всегда поддерживается и не везде такая регулярка будет работать. Нужно искать способ заменить этот lookbehind, но это зависит от поставленной задачи, поэтому нельзя сказать, как именно ее заменять. Будем надеяться, что в скором временем будет полная поддержка этой возможности.

Чтобы сделать наоборот, то есть выбрать все символы s, до которых НЕ будет идти символ d, нужно опять же поменять знак равно на восклицательный знак: (? регулярные выражения спецсимволы php. Смотреть фото регулярные выражения спецсимволы php. Смотреть картинку регулярные выражения спецсимволы php. Картинка про регулярные выражения спецсимволы php. Фото регулярные выражения спецсимволы php

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

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

Здесь мы создаем строку с текстом, который хотим проверить, создаем объект класса Regex и в конструктор пишем нашу регулярку (как я и говорил, я не буду заострять внимание на том, что такое объект класса и конструктор). Потом создаем объект класса MatchCollection и от объекта regex вызываем метод Matches и в параметры передаем нашу строку. В результате все сопоставления будут добавляться в коллекцию matches.

Java

Здесь похожая ситуация. Создаем объект класса Pattern и записываем нашу строку. CASE_INSENSITIVE означает, что он не привязан к регистру (то есть нет разницы между заглавными и строчными символами). Создаем объект класса Matcher и пишем туда регулярку.

JavaScript

Здесь тоже все просто. Вы создаете объект regex и пишете туда регулярку. И затем просто создаете объект matches, который будет являться коллекцией и вызываете метод exec и в параметры передаете строку.

Заключение

Итак, мы разобрали, что такое регулярные выражения, где они используются, как их писать и использовать в контексте языков программирования. Скажу сразу, написание регулярок приходит с опытом. Практикуйтесь, и я уверен: все у вас получится! А на этом я с вами прощаюсь. Спасибо за внимание и приятного всем дня)

Источник

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

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