Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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

ВВЕДЕНИЕ

 

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

 

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

 

Регулярное выражение (regular expression, regexp, регэксп) - механизм, позволяющий задать шаблон для строки и осуществить поиск данных, соответствующих этому шаблону в заданном тексте.

 

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

 

Регулярное выражение представляет собой последовательность простых и служебных символов, описывающих искомый текст. Иногда регулярные выражения бывают простыми и понятными, но часто в них присутствуют служебные символы, обладающие особым смыслом в синтаксисе регулярных выражений — например <(?)>.*<\/.?>.

 

В РНР существуют два семейства функций, каждое из которых относится к определенному типу регулярных выражений: в стиле POSIX или в стиле Perl.

Стиль POSIX регулярных выражений компилируется в РНР по умолчанию, а стиль Perl можно активизировать, выполнив компиляцию с библиотекой PCRE (Perl-compatible regular expression — Perl-совместимые регулярные выражения).

 

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

 

Структура регулярных выражений POSIX чем-то напоминает структуру типичных математических выражений — различные элементы (операторы) объединяются друг с другом и образуют более сложные выражения. Однако именно смысл объединения элементов делает регулярные выражения таким мощным и выразительным средством. Возможности не ограничиваются поиском литерального текста (например, конкретного слова или числа); вы можете провести поиск строк с разной семантикой, но похожим синтаксисом — например, всех тегов HTML в файле.

 

Простейшее регулярное выражение совпадает с одним литеральным символом — например, выражение g совпадает в таких строках, как g, haggle и bag. Выражение, полученное при объединении нескольких литеральных символов, совпадает по тем же правилам — например, последовательность gan совпадает в любой строке, содержащей эти символы (например, gang, organize или Reagan).

 

Оператор «|» (вертикальная черта) проверяет совпадение одной из нескольких альтернатив. Например, регулярное выражение php | zend проверяет строку на наличие php или zend.

 

Метасимвол Значение
Метасимволы для задания символов, не имеющих изображения
\n Символ перевода строки (код 0x0A)
\r Символ возврата каретки (код 0x0D)
\t Символ табуляции (код 0x09)
\xhh Вставка символа с шестнадцатиричным кодом 0xhh, например \x41 вставит латинскую букву 'A'
Метасимволы для задания групп символов
\d Цифра (0-9)
\D Не цифра (любой символ кроме символов 0-9)
\s Пустой символ (обычно пробел и символ табуляции)
\S Непустой символ (все, кроме символов, определяемых метасимволом \s)
\w "Словесный" символ (символ, который используется в словах. Обычно все буквы, все цифры и знак подчеркивания ('_'))
\W Все, кроме символов, определяемых метасимволом \w

 

 

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

 

Квадратные скобки ([ ]) имеют особый смысл в контексте регулярных выражений — они означают «любой символ из перечисленных в скобках». В отличие от регулярного выражения php, которое совпадает во всех строках, содержащих литеральный текст php, выражение [php] совпадает в любой строке, содержащей символы р или h. Квадратные скобки играют важную роль при работе с регулярными выражениями, поскольку в процессе поиска часто возникает задача поиска символов из заданного интервала.

Некоторые часто используемые интервалы:

¾ Интервал [0 - 9] — совпадает с любой десятичной цифрой от 0 до 9;

¾ Интервал [a - z] — совпадает с любым символом нижнего регистра от а до z;

¾ Интервал [A - Z] — совпадает с любым символом верхнего регистра от А до Z;

¾ Интервал [a – Z] — совпадает с любым символом нижнего или верхнего регистра от а до Z.

 

Конечно, перечисленные выше интервалы всего лишь демонстрируют общий принцип. Например, вы можете воспользоваться интервалом [0-3] для обозначения любой десятичной цифры от 0 до 3 или интервалом [b-v] для обозначения любого символа нижнего регистра от b до v. Короче говоря, интервалы определяются совершенно произвольно.

 

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

 

Существует особый класс служебных символов, обозначающих количество повторений отдельного символа или конструкции, заключенной в квадратные скобки. Эти служебные символы (+, * и {...}) называются квантификаторами.

 

Принцип их действия проще всего пояснить на примерах:

р+ означает один или несколько символов р, стоящих подряд;

р* означает ноль и более символов р, стоящих подряд;

р? означает ноль или один символ р;

р{2} означает два символа р, стоящих подряд;

р{2,3} означает от двух до трех символов р, стоящих подряд;

р{2,} означает два и более символов р, стоящих подряд.

 

Прочие служебные символы.

 

Служебные символы $ и ^ совпадают не с символами, а с определенными позициями в строке. Например, выражение р$ означает строку, которая завершается символом р, а выражение ^р — строку, начинающуюся с символа р.

Конструкция [^a-zA-Z] совпадает с любым символом, не входящим в указаные интервалы (a-z и A-Z).

 

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

 

Объединение служебных символов приводит к появлению более сложных выражений. Рассмотрим несколько примеров:

^.{2}$ — любая строка, содержащая ровно два символа;

<b>(.*)</b> — произвольная последовательность символов, заключенная между <Ь> и </Ь> (вероятно, тегами HTML для вывода жирного текста);

p(hp)* — символ р, за которым следует ноль и более экземпляров последовательности hp (например, phphphp).

 

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

 

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

 

Для регистронезависимого поиска по выражению используют - /i. Это означает, что в результат поиска попадут отрывки текста содержащие и заглавные и прописные символы.

/U - модификатор указывает на то, что результатом поиска должен быть самый короткий отрывок, удовлетворяющий маске поиска.

Модификатор /m позволяет искать отрезок текста только внутри одной строки.

/s модификатор используют, если необходимо, что бы поиск был по всему тексту, не обращая внимания на перенос строки.

Модификатор /x - игнорирует пробельные символы, в том числе символы табуляции и перевода строки.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...