Синтаксис регулярных выражений ( POSIX )
Структура регулярных выражений POSIX чем-то напоминает структуру типичных
математических выражений - различные элементы(операторы) объединяются друг с
другом и образуют более сложные выражения. Однако именно смысл объединения
элементов делает регулярные выражения таким мощным и выразительным средством.
Возможности не ограничиваются поиском литерального текста (например, конкретного
слова или числа); вы можете провести поиск строк с разной сематикой, но похожим
синтаксисом - например, всех тегов HTML в файле. Простейшее регулярное
выражение совпадает с одним литеральным словом - например, выражение g
совпадает в таких строках, как g, haggle, bag. Выражение,
полученное при объединении нескольких литеральных символов, совпадает по тем же
правилам - например, последовательность gan совпадает в люьой строке,
содержащей эти символы (например gan, organize).
Оператор | (вертикальная черта) проверяет совпадение
одной из нескольких альтернатив. Например, регулярное выражение php|zend
проверяет строку на наличие php или zend.
Квадратные скобки Квадратные скобки ( [
] ) имеют особый смысл в контроле регулярных выражений - они означают
"любой символ из перечисленных в скобках". В отличие от регулярного выражения
word, которое совпадает во всех строках содержащей литеральный текст
word, выражение [word] совпадает в любой строке, содержащей символ
w, o, r или d. Квадратные скобки играют важную роль
при работе с регулярными выражениями, поскольку в процессе поиска часто
возникает задача поиска символов из заданного интервала. Ниже перечислены
некоторые часто используемые интервалы:
[0-9] - совпадает с любой десятичной цифрой от 0 до 9;
[a-z] - совпадает с любым символом нижнего регистра от a до
z;
[A-Z] - совпадает с любым символом верхнего регистра от A до
Z;
[a-Z] - совпадает с любым символом нижнего или верхнего регистра от
a до Z; Перечисленные интервалы всего демонстрируют
общий принцип. Например, вы можете воспользоваться интервалом [0-3] для
обозначения любого символа от 0 до 3 или интервалом [a-d]
для обозначения любого символя нижнего регистра от a до
d. Интервалы определяются произвольно.
Квантификаторы Существует особый класс служебных символов,
обозначающих количество повторений отдельного символа или конструкции,
заключенной в квадратные скобки. эти служебные символы (+, * и
{...} называются квантификаторами. Принцип их действия проще всего
объяснить на примерах.
S+ означает один или несколько символов S, стоящих подряд;
S* означает ноль и более символов S, стоящих подряд;
S? означает ноль или один символ S;
S{2} означает два символа S, стоящих подряд;
S{2,3} означает от двух до трёх символов S, стоящих подряд;
S{2,} означает два и более символов S, стоящих подряд;
Прочие служебные символы Служебные символы
$ и ^ совпадают не с символами, а с определённой позиции в строке.
Например, выражение S$ означает строку, которая завершается символом
S, а выражение ^S - строку, начинающуюся с символа S.
Конструкция [^a-zA-Z] совпадает с любым символом, не входящим в
указанные интервалы (a-z и A-Z).
Служебный символ . (точка) означает любой символ. Например, выражение
S.S совпадает с символом S, за которым следует произвольный
символ, после чего опять следует S. Объединение служебных
символов приводит к появлению более сложных выражений. Рассмотрим несколько
примеров:
^.{2}$ - любая строка, содержащая два символа.
<b>(.*)</b> - произвольная последовательность символов,
заключённых между lt;b> и lt;/b>.
p(hp*) - символ p, за которым следует ноль и более экземпляров
последовательности hp (например, php).
Иногда
требуется найти служебные символы в строках вместо того, чтобы использовать их в
описанном специальном контексте. Для этого служебные символя экранируются
обратной чертой (\). Например. Например, для поиска символя $ надо
использовать выражение \$.
Стандартные интервальные
выражения (символьные классы) Для удобства программирования в
стиле POSIX были определены некоторые стандартные интервальные выражения,
также называемыми символьными классами(character classes). Символьный
класс определяет один символ из заданного интервала - например, букву алфавита
или цифру.
[[:alpha:]] - алфавитный символ (aA-zZ);
[[:digit:]] - цифра (0-9);
[[:alnum:]] - алфавитный символ (aA-zZ) или цифра (0-9).
[[:space:]] - пропуски (символы новой строки, табуляции и т.д.)
Источник: www.php-mysql.h1.ru
|