SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы

Назад

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


Метки: регулярные выражения

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

Модификатор Описание
g найти все совпадения, а не останавливаться после первого совпадения (global match flag)
i не различать строчные и заглавные буквы
m считать строку многострочной
s однострочная строка
x расширенный синтаксис ( использование пробелов и комментариев)

Квантификация

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

Шаблон Описание
{n,m} общее выражение, повторений может быть от n до m включительно
{n,} общее выражение, n и более повторений
{,m}
общее выражение, не более m повторений
{n} общее выражение, ровно n повторений
? Знак вопроса означает 0 или 1 раз, то же самое, что и {0,1}. Например, «colou?r» соответствует и color, и colour
* Звёздочка означает 0, 1 или любое число раз ({0,}). Например, «go*gle» соответствует goglegooglegooogleggle, и др.
+ Плюс означает хотя бы 1 раз ({1,}). Например, «go+gle» соответствует goglegoogle и т. д. (но не ggle)

Диапазоны символов

POSIX

Шаблон Описание
[:upper:] [A-Z]

символы верхнего регистра

[:lower:] [a-z]

символы нижнего регистра

[:alpha:] [A-Za-z]

символы верхнего и нижнего регистра

[:alnum:] [A-Za-z0-9]

цифры, символы верхнего и нижнего регистра

[:digit:] [0-9]

цифры

[:xdigit:] [0-9A-Fa-f]

шестнадцатеричные цифры

[:punct:] [.,!?:…]

знаки пунктуации

[:blank:] [ \t]

пробел и TAB

[:space:] [ \t\n\r\f\v]

символы пробелов(пропуска)

[:cntrl:] [\x00-\x1F\x7F]

символы управления

[:graph:] [:alnum:] ∪ [:punct:]

символы печати

[:print:] [\x20-\x7E]

символы печати и символы пропуска(видимые символы и пробелы)

Группы

Обозначение Описание

()

Простая группа с захватом

(?:)

Группа без захвата. То же самое, но заключённое в скобках выражение не добавляется к списку захваченных фрагментов. Например, если требуется найти или «здравствуйте», или «здраститя», но не важно, какое именно приветствие найдено, можно воспользоваться выражением здра(?:ститя|вствуйте)

(?=)

Группа с положительной опережающей проверкой (positive lookahead assertion). Продолжает поиск только если справа от текущей позиции в тексте находится заключённое в скобки выражение. При этом само выражение не захватывается. Например, говор(?=ить) найдёт «говор» в «говорить», но не в «говорит». Иными словами, ищет в строке «говор», после которого сразу идут символы «ить» — если находит, выдает истину, иначе — ложь (FALSE)

(?!)

Группа с отрицательной опережающей проверкой (negative lookahead assertion). Продолжает поиск только если справа от текущей позиции в тексте не находится заключённое в скобки выражение. При этом само выражение не захватывается. Например, говор(?!ить) найдёт «говор» в «говорит», но не в «говорить»

(?<=)

Группа с положительной ретроспективной проверкой (positive lookbehind assertion). Продолжает поиск только если слева от текущей позиции в тексте находится заключённое в скобки выражение. При этом само выражение не захватывается. Например, (?<=об)говорить найдёт «говорить» в «обговорить», но не в «уговорить»

(?<!)

Группа с отрицательной ретроспективной проверкой (negative lookbehind assertion). Продолжает поиск только если слева от текущей позиции в тексте не находится заключённое в скобки выражение. При этом само выражение не захватывается. Например, (?<!об)говорить найдёт «говорить» в «уговорить», но не в «обговорить»