Регулярные выражения
Регуля́рные выраже́ния (англ. regular expressions) — формальный язык, используемый в компьютерных программах, работающих с текстом, для поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеров). Для поиска используется строка-образец (англ. pattern, по-русски её часто называют «шаблоном», «маской»), состоящая из символов и метасимволов и задающая правило поиска. Для манипуляций с текстом дополнительно задаётся строка замены, которая также может содержать в себе специальные символы.

Возможности
Регулярные выражения используются некоторыми текстовыми редакторами и утилитами для поиска и подстановки текста. Например, при помощи регулярных выражений можно задать шаблоны, позволяющие:
- найти все последовательности символов «кот» в любом контексте, как то: «кот», «котлета», «терракотовый»;
- найти отдельно стоящее слово «кот» и заменить его на «кошка»;
- найти слово «кот», которому предшествует слово «персидский» или «чеширский»;
- убрать из текста все предложения, в которых упоминается слово «кот» или «кошка».
Регулярные выражения позволяют задавать и гораздо более сложные шаблоны поиска или замены.
Результатом работы с регулярным выражением может быть:
- проверка наличия искомого образца в заданном тексте;
- определение подстроки текста, которая сопоставляется образцу;
- определение групп символов, соответствующих отдельным частям образца.
Если регулярное выражение используется для замены текста, то результатом работы будет новая текстовая строка, представляющая собой исходный текст, из которого удалены найденные подстроки (сопоставленные образцу), а вместо них подставлены строки замены (возможно, модифицированные запомненными при разборе группами символов из исходного текста). Частным случаем модификации текста является удаление всех вхождений найденного образца — для чего строка замены указывается пустой.
Набор утилит (включая редактор sed и фильтр grep), поставляемых в дистрибутивах UNIX, одним из первых способствовал популяризации регулярных выражений для обработки текстов. Многие современные языки программирования имеют встроенную поддержку регулярных выражений. Среди них Perl, Java,PHP, JavaScript, языки платформы .NET Framework, Python, Tcl, Ruby, Lua, Gambas, C++ (стандарт 2011 года), Delphi, D, Haxe и другие.
История
Истоки регулярных выражений лежат в теории автоматов, теории формальных языков и классификации формальных грамматик по Хомскому.
Эти области изучают вычислительные модели (автоматы) и способы описания и классификации формальных языков. В 1940-х гг. Уоррен Маккалок и Уолтер Питтс описали нейронную систему, используя простой автомат в качестве модели нейрона.
Математик Стивен Клини позже описал эти модели, используя свою систему математических обозначений, названную «регулярные множества».
Кен Томпсон встроил их в редактор QED, а затем — в редактор ed под UNIX. С этого времени регулярные выражения стали широко использоваться в UNIX и UNIX-подобных утилитах, например в expr, awk, Emacs, vi, lex и Perl.
Регулярные выражения в Perl и Tcl происходят от реализации, написанной . разработал библиотеку PCRE (англ. Perl-compatible regular expressions — Perl-совместимые регулярные выражения), которая используется во многих современных инструментах, таких как PHP и Apache[источник не указан 2249 дней].
В теории формальных языков
Регулярные выражения состоят из констант и операторов, которые определяют множества строк и множества операций на них соответственно. Определены следующие константы:
- (пустое множество) ∅;
- (пустая строка) ε обозначает строку, не содержащую ни одного символа; эквивалентно "";
- (символьный литерал) «a», где a — символ используемого алфавита;
- (множество) из символов, либо из других множеств;
и следующие операции:
- (сцепление, конкатенация) RS обозначает множество {αβ | α ∈ R & β ∈ S}, например: {"boy", "girl"}{"friend", "cott"} = {"boyfriend", "girlfriend", "boycott", "girlcott"};
- (дизъюнкция, чередование) R|S обозначает объединение R и S, например: {"ab", "c"}|{"ab", "d", "ef"} = {"ab", "c", "d", "ef"};
- (замыкание Клини, звезда Клини) R* обозначает минимальное надмножество множества R, которое содержит ε и замкнуто относительно конкатенации (это есть множество всех строк, полученных конкатенацией нуля или более строк из R, например: {«Run», «Forrest»}* = {ε, «Run», «Forrest», «RunRun», «RunForrest», «ForrestRun», «ForrestForrest», «RunRunRun», «RunRunForrest», «RunForrestRun», …})[источник не указан 2249 дней].
Регулярные выражения, входящие в современные языки программирования (в частности, PCRE), имеют больше возможностей, чем то, что называется регулярными выражениями в теории формальных языков; в частности, в них есть нумерованные обратные ссылки. Это позволяет им разбирать строки, описываемые не только регулярными грамматиками, но и более сложными, в частности, контекстно-свободными грамматиками.
Синтаксис
Представление символов
Обычные символы (литералы) и специальные символы (метасимволы)
Большинство символов в регулярном выражении представляют сами себя за исключением специальных символов [ ] \ / ^ $ . | ? * + ( ) { } (в разных типах регулярных выражений этот набор различается, см. Разновидности регулярных выражений), которые могут быть экранированы символом \ (обратная косая черта) для представления самих себя в качестве символов текста. Можно экранировать целую последовательность символов, заключив её между \Q и \E.
| Пример | Соответствие |
|---|---|
a\.? | a. или a |
a\\\\b | a\\b |
a\[F\] | a[F] |
\Q+-*/\E | +-*/ |
Аналогично могут быть представлены другие специальные символы (наборы символов, требующих экранирования, могут различаться в зависимости от конкретной реализации). Часть символов, которые в той или иной реализации не требуют экранирования (например, угловые скобки < >), может быть экранирована из соображений удобочитаемости.
Любой символ
Метасимвол . (точка) означает один любой символ, но в некоторых реализациях — исключая символ новой строки.
Вместо символа . можно использовать [\s\S] (все пробельные и непробельные символы, включая символ новой строки).
Символьные классы (наборы символов)
Набор символов в квадратных скобках [ ] именуется символьным классом и позволяет указать интерпретатору регулярных выражений, что на данном месте в строке может стоять один из перечисленных символов. В частности, [абв] задаёт возможность появления в тексте одного из трёх указанных символов, а [1234567890] задаёт соответствие одной из цифр. Возможно указание диапазонов символов: например, [А-Яа-я] соответствует всем буквам русского алфавита, за исключением букв «Ё» и «ё». Некоторые реализации регулярных выражений могут позволять включать в символьные классы не только символы, но и целые строки.
Если требуется указать символы, которые не входят в указанный набор, то используют символ ^ внутри квадратных скобок, например [^0-9] означает любой символ, кроме цифр.
Добавление в набор специальных символов путём экранирования — самый бесхитростный способ. Однако в современных регулярных выражениях унаследован также и традиционный подход — см. Традиционные регулярные выражения.
Некоторые символьные классы можно заменить специальными метасимволами:
| Символ | Возможный эквивалент | Соответствие |
|---|---|---|
\d | [0-9] | Цифровой символ |
\D | [^0-9] | Нецифровой символ |
\s | [ \f\n\r\t\v] | Пробельный символ |
\S | [^ \f\n\r\t\v] | Непробельный символ
|
\w | [A-Za-z0-9_] | Буквенный или цифровой символ или знак подчёркивания; буквы ограничены латиницей
|
\W | [^A-Za-z0-9_] | Любой символ, кроме буквенного или цифрового символа или знака подчёркивания |
Позиция внутри строки
Следующие символы позволяют спозиционировать регулярное выражение относительно элементов текста: начала и конца строки, границ слова.
| Представление | Позиция | Пример | Соответствие |
|---|---|---|---|
^ | Начало текста (или строки при модификаторе ?m) | ^a | aaa aaa |
$ | Конец текста (или строки при модификаторе ?m) | a$ | aaa aaa |
\b | Граница слова | a\b | aaa aaa |
\ba | aaa aaa | ||
\B | Не граница слова | \Ba\B | aaa aaa |
\G | Предыдущий успешный поиск | \Ga | aaa aaa (поиск остановился на 4-й позиции — там, где не нашлось a) |
Специальные символы
\n — перевод строки
\r — возврат каретки
Обозначение группы
Круглые скобки используются для определения области действия и приоритета операций. Шаблон внутри группы обрабатывается как единое целое и может быть квантифицирован. Например, выражение (тр[ау]м-?)* найдёт последовательность вида трам-трам-трумтрам-трум-трамтрум.
Перечисление
Вертикальная черта разделяет допустимые варианты. Например, gray|grey соответствует gray или grey. Следует помнить, что перебор вариантов выполняется слева направо, как они указаны.
Если требуется указать перечень вариантов внутри более сложного регулярного выражения, то его нужно заключить в группу. Например, gray|grey или gr(a|e)y описывают строку gray или grey. В случае с односимвольными альтернативами предпочтителен вариант gr[ae]y, так как сравнение с символьным классом выполняется проще, чем обработка группы с проверкой на все её возможные модификаторы и генерацией обратной связи.
Квантификация (поиск последовательностей)
Квантификатор после символа, символьного класса или группы определяет, сколько раз предшествующее выражение может встречаться. Следует учитывать, что квантификатор может относиться более чем к одному символу в регулярном выражении, только если это символьный класс или группа.
| Представление | Число повторений | Эквивалент | Пример | Соответствие |
|---|---|---|---|---|
? | Ноль или одно | {0,1} | colou?r | color, colour |
* | Ноль или более | {0,} | colou*r | color, colour, colouur и т. д. |
+ | Одно или более | {1,} | colou+r | colour, colouur и т. д. (но не color) |
| Представление | Число повторений | Пример | Соответствие |
|---|---|---|---|
{n} | Ровно n раз | colou{3}r | colouuur |
{m,n} | От m до n включительно | colou{2,4}r | colouur, colouuur, colouuuur |
{m,} | Не менее m | colou{2,}r | colouur, colouuur, colouuuur и т. д. |
{,n} | Не более n | colou{,3}r | color, colour, colouur, colouuur |
Часто используется последовательность .* для обозначения любого количества любых символов между двумя частями регулярного выражения.
Символьные классы в сочетании с квантификаторами позволяют устанавливать соответствия с реальными текстами. Например, столбцами цифр, телефонами, почтовыми адресами, элементами HTML-разметки и др.
Если символы { } не образуют квантификатора, их специальное значение игнорируется.
Жадная и ленивая квантификация
Выражение (<.*>) соответствует строке, содержащей несколько тегов HTML-разметки, целиком.
<p><b>Википедия</b> — свободная энциклопедия, в которой <i>каждый</i> может изменить или дополнить любую статью.</p>
Чтобы выделить отдельные теги, можно применить ленивую версию этого выражения: (<.*?>) Ей соответствует не вся показанная выше строка, а отдельные теги (выделены цветом):
<p><b>Википедия</b> — свободная энциклопедия, в которой <i>каждый</i> может изменить или дополнить любую статью.</p>
В некоторых реализациях квантификаторам в регулярных выражениях соответствует максимально длинная строка из возможных (квантификаторы являются жадными, англ. greedy). Это может оказаться значительной проблемой. Например, часто ожидают, что выражение (<.*>) найдёт в тексте теги HTML. Однако если в тексте есть более одного HTML-тега, то этому выражению соответствует целиком строка, содержащая множество тегов.
<p><b>Википедия</b> — свободная энциклопедия, в которой <i>каждый</i> может изменить или дополнить любую статью.</p>
Эту проблему можно решить двумя способами.
- Учитывать символы, не соответствующие желаемому образцу (
<[^>]*>для вышеописанного случая). - Определить квантификатор как нежадный (ленивый, англ. lazy) — большинство реализаций позволяют это сделать, добавив после него знак вопроса.
Использование ленивых квантификаторов может повлечь за собой обратную проблему, когда выражению соответствует слишком короткая, в частности, пустая строка.
| Жадный | Ленивый |
|---|---|
* | *? |
+ | +? |
{n,} | {n,}? |
Также общей проблемой как жадных, так и ленивых выражений являются точки возврата для перебора вариантов выражения. Точки ставятся после каждой итерации квантификатора. Если интерпретатор не нашёл соответствия после квантификатора, то он начинает возвращаться по всем установленным точкам, пересчитывая оттуда выражение по-другому.
Ревнивая квантификация (сверхжадная)
При поиске выражения (a+a+)+a в строке aaaaa интерпретатор пойдёт приблизительно по следующему пути:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa— и только тут, проверив все точки возврата, остановится.
При использовании ревнивого квантификатора будет выполнен только первый шаг алгоритма.
В отличие от обычной (жадной) квантификации, ревнивая (possessive) квантификация не только старается найти максимально длинный вариант, но ещё и не позволяет алгоритму возвращаться к предыдущим шагам поиска для того, чтобы найти возможные соответствия для оставшейся части регулярного выражения.
Использование ревнивых квантификаторов увеличивает скорость поиска, особенно в тех случаях, когда строка не соответствует регулярному выражению. Кроме того, ревнивые квантификаторы могут быть использованы для исключения нежелательных совпадений.
| Жадный | Ревнивый |
|---|---|
* | *+ |
? | ?+ |
+ | ++ |
{n,} | {n,}+ |
| Пример | Соответствие |
|---|---|
ab(xa)*+a | abxaabxaa; но не abxaabxaa, так как буква a уже занята |
Это аналогично атомарной группировке.
Группировка
Обратная связь
Одно из применений группировки — повторное использование ранее найденных групп символов (подстрок, блоков, отмеченных подвыражений, захватов). При обработке выражения подстро́ки, найденные по шаблону внутри группы, сохраняются в отдельной области памяти и получают номер, начиная с единицы. Каждой подстроке соответствует пара скобок в регулярном выражении.
Обычно поддерживается до 9 нумерованных подстрок с номерами от 1 до 9, но некоторые интерпретаторы позволяют работать с бо́льшим количеством. Впоследствии в пределах данного регулярного выражения можно использовать обозначения от \1 до \9 для проверки на совпадение с ранее найденной подстрокой. В некоторых реализациях вместо бэкслеша используется знак доллара.
Например, регулярное выражение (та|ту)-\1 найдёт строку та-та или ту-ту, но пропустит строку та-ту.
Квантификация группы трактуется как многократное сохранение подстроки под одним и тем же номером, то есть запоминается последнее вхождение: например, регулярное выражение (.)+\1 найдёт строку abcc, но пропустит abca.
Также ранее найденные подстро́ки можно использовать при замене по регулярному выражению. В таком случае в замещающий текст вставляются те же обозначения, что и в пределах самого выражения.
Группировка без обратной связи
Если группа используется только для группировки и её результат в дальнейшем не потребуется, то можно использовать группировку вида (?:шаблон). Под результат такой группировки не выделяется отдельная область памяти и, соответственно, ей не назначается номер. Это положительно влияет на скорость выполнения выражения, но понижает удобочитаемость.
Атомарная группировка
Атомарная группировка вида (?>шаблон) так же, как и группировка без обратной связи, не создаёт обратных связей. В отличие от неё, такая группировка запрещает возвращаться назад по строке, если часть шаблона уже найдена.
| Пример | Соответствие | Создаваемые группы |
|---|---|---|
a(bc|b|x)cc | abccaxcc
| abccaxcc
|
a(?:bc|b|x)cc | abccaxcc, abccaxcc | нет |
a(?>bc|b|x)cc | abccaxcc но не | нет |
a(?>x*)xa | не найдётся axxxa: все x заняты, и нет возврата внутрь группы |
Атомарная группировка выполняется ещё быстрее, чем группировка без обратной связи, и сохраняет процессорное время при выполнении остального выражения, так как запрещает проверку любых других вариантов внутри группы, когда один вариант уже найден. Это очень полезно при оптимизации групп со множеством различных вариантов.
Это аналогично ревнивой квантификации.
Модификаторы
Модификаторы действуют с момента вхождения и до конца регулярного выражения или противоположного модификатора. Некоторые интерпретаторы могут применить модификатор ко всему выражению, а не с момента его вхождения.
| Синтаксис | Описание | |
|---|---|---|
(?i) | Включает | нечувствительность выражения к регистру символов (англ. case insensitivity) |
(?-i) | Выключает | |
(?s) | Включает | режим соответствия точки символам переноса строки и возврата каретки |
(?-s) | Выключает | |
(?m) | Символы ^ и $ вызывают соответствие только | после и до символов новой строки |
(?-m) | с началом и концом текста | |
(?x) | Включает | режим без учёта пробелов между частями регулярного выражения и позволяет использовать # для комментариев |
(?-x) | Выключает | |
Группы-модификаторы можно объединять в одну группу: (?i-sm). Такая группа включает режим i и выключает режимы s и m. Если использование модификаторов требуется только в пределах группы, то нужный шаблон указывается внутри группы после модификаторов и после двоеточия. Например, (?-i)(?i:tv)set найдёт TVset, но не TVSET.
Комментарии
Для добавления комментариев в регулярное выражение можно использовать группы-комментарии вида (?#комментарий). Такая группа интерпретатором полностью игнорируется и не проверяется на вхождение в текст. Например, выражение А(?#тут комментарий)Б соответствует строке АБ.
Просмотр вперёд и назад
В большинстве реализаций регулярных выражений есть способ производить поиск фрагмента текста, «просматривая» (но не включая в найденное) окружающий текст, который расположен до или после искомого фрагмента текста. Просмотр с отрицанием используется реже и «следит» за тем, чтобы указанные соответствия, напротив, не встречались до или после искомого текстового фрагмента.
| Представление | Вид просмотра | Пример | Соответствие |
|---|---|---|---|
(?=шаблон) | Позитивный просмотр вперёд | Людовик(?=XVI) | ЛюдовикХV, ЛюдовикXVI, ЛюдовикXVIII, ЛюдовикLXVII, ЛюдовикХХL |
(?!шаблон) | Негативный просмотр вперёд (с отрицанием) | Людовик(?!XVI) | ЛюдовикXV, ЛюдовикХVI, ЛюдовикХVIII, ЛюдовикLXVII, ЛюдовикXXL |
(?<=шаблон) | Позитивный просмотр назад | (?<=Сергей )Иванов | Сергей Иванов, Игорь Иванов |
(?<!шаблон) | Негативный просмотр назад (с отрицанием) | (?<!Сергей )Иванов | Сергей Иванов, Игорь Иванов |
Поиск по условию
Во многих реализациях регулярных выражений существует возможность выбирать, по какому пути пойдёт проверка в том или ином месте регулярного выражения на основании уже найденных значений.
| Представление | Пояснение | Пример | Соответствие |
|---|---|---|---|
(?(?=если)то|иначе) | Если операция просмотра успешна, то далее выполняется часть то, иначе выполняется часть иначе. В выражении может использоваться любая из четырёх операций просмотра. Следует учитывать, что операция просмотра нулевой ширины, поэтому части то в случае позитивного или иначе в случае негативного просмотра должны включать в себя описание шаблона из операции просмотра. | (?(?<=а)м|п) | мам,пап |
(?(n)то|иначе) | Если n-я группа вернула значение, то поиск по условию выполняется по шаблону то, иначе по шаблону иначе. | (а)?(?(1)м|п) | мам,пап |
Флаги
В некоторых языках (например, в JavaScript) реализованы т. н. «флаги», которые расширяют функции RegExp. Флаги указываются после регулярного выражения (порядок флагов значения не имеет). Типичные флаги:
- g — глобальный поиск (обрабатываются все совпадения с шаблоном поиска);
- i — регистр букв не имеет значения;
- m — многострочный поиск;
- s — текст трактуется как одна строка, в этом случае метасимволу
.(точка) соответствует любой одиночный символ, включая символ новой строки; - u — unicode-трактовка. Выражение может содержать специальные паттерны, характерные для юникода, например,
/\p{Lu}/— заглавные буквы.
Флаг указывается после паттерна, например, вот так: /[0-9]$/m.
Разновидности регулярных выражений
Базовые регулярные выражения POSIX
(англ. basic regular expressions (BRE)). Традиционные регулярные выражения UNIX. Синтаксис базовых регулярных выражений на данный момент определён POSIX'ом как устаревший, но он до сих пор широко распространён из соображений обратной совместимости. Многие UNIX-утилиты используют такие регулярные выражения по умолчанию.
В данную версию включены метасимволы:
.;[];[^];^(действует только в начале выражения);$(действует только в конце выражения);*;\{\}— первоначальный вариант для{};\(\)— первоначальный вариант для();\n, где n — номер от 1 до 9.
Особенности:
- Звёздочка должна следовать после выражения, соответствующего единичному символу. Пример:
[xyz]*. - Выражение
\(блок\)*следует считать неправильным. В некоторых случаях оно соответствует нулю или более повторений строкиблок. В других оно соответствует строкеблок*. - Внутри символьного класса специальные значения символов, в основном, игнорируются. Особые случаи:
- Чтобы добавить символ
^в набор, его следует поместить туда не первым. - Чтобы добавить символ
-в набор, его следует поместить туда первым или последним. Например:- шаблон DNS-имени, куда могут входить буквы, цифры, минус и точка-разделитель:
[-0-9a-zA-Z.]; - любой символ, кроме минуса и цифры:
[^-0-9].
- шаблон DNS-имени, куда могут входить буквы, цифры, минус и точка-разделитель:
- Чтобы добавить символ
[или]в набор, его следует поместить туда первым. Например:[][ab]соответствует],[,aилиb.
- Чтобы добавить символ
Расширенные регулярные выражения POSIX
(англ. extended regular expressions (ERE)). Синтаксис в основном аналогичен традиционному.
- Отменено использование обратной косой черты для метасимволов
{ }и( ). - Обратная косая черта перед метасимволом отменяет его специальное значение (см. Представление специальных символов).
- Отвергнута теоретически нерегулярная конструкция
\n. - Добавлены метасимволы
+,?,|.
Регулярные выражения, совместимые с Perl
Perl-совместимые регулярные выражения (англ. Perl-compatible regular expressions (PCRE)) имеют более богатый синтаксис, чем даже POSIX ERE. По этой причине очень многие приложения используют именно Perl-совместимый синтаксис регулярных выражений.
Регулярные выражения, совместимые с Unicode
Unicode — это набор символов, целью которого является определение всех символов и символов со всех человеческих языков, живых и мёртвых. Регулярные выражения, рассчитанные на множество языков, таким образом не привязываются к конкретным наборам символов, а описывают их согласно принятым правилам. Так, например, выражение для нахождения заглавных букв в любом алфавите будет выглядеть так: /\p{Lu}/.
| представление | функциональность | |
|---|---|---|
| возможная краткая форма | возможная полная форма | |
| Буквы | ||
\p{L} | \p{Letter} | любые буквы любого языка |
\p{Ll} | \p{Lowercase_Letter} | буквы нижнего регистра (строчные) из тех, что имеют прописной вариант написания |
\p{Lu} | \p{Uppercase_Letter} | буквы верхнего регистра (прописные) для тех, что имеют строчный вариант написания |
\p{Lt} | \p{Titlecase_Letter} | прописная буква, которая появляется с начала слова из строчных букв |
\p{L&} | \p{Cased_Letter} | буква, которая имеет как прописной, так и строчный варианты написания |
\p{Lm} | \p{Modifier_Letter} | специальные символы, которые используются как буквы |
\p{Lo} | \p{Other_Letter} | символ или идеограмма, которая не имеет прописных и строчных вариантов написания |
| Специальные символы | ||
\p{M} | \p{Mark} | символы, вставленные для комбинирования с другими символами (например акценты, умляуты, оборачивающие скобки) |
\p{Mn} | \p{Non_Spacing_Mark} | символ, вставленный для комбинирования с другими символами, не занимая дополнительной ширины |
\p{Mc} | \p{Spacing_Combining_Mark} | символы, вставленные для комбинирования с другими символами, занимая дополнительную ширину (как во многих восточных языках) |
\p{Me} | \p{Enclosing_Mark} | символы, которые оборачивают символ. Например круг, квадрат и т.п |
| Пробелы и разделители | ||
\p{Z} | \p{Separator} | любые виды пробелов или невидимых разделителей |
\p{Zs} | \p{Space_Separator} | пробельные символы, которые невидимы, но имеют ширину |
\p{Zl} | \p{Line_Separator} | символ разделения в виде линии U+2028 |
\p{Zp} | \p{Paragraph_Separator} | знак параграфа U+2029 |
| Математические символы | ||
\p{S} | \p{Symbol} | математические символы, символы валюты, символы псевдографики (рамки) и т. п. |
\p{Sm} | \p{Math_Symbol} | любые математические символы |
\p{Sc} | \p{Currency_Symbol} | любые символы валют |
\p{Sk} | \p{Modifier_Symbol} | комбинированный символ (пометка) как комбинация самого символа и символа отметки |
\p{So} | \p{Other_Symbol} | различные символы, не математические, не символы валют или их комбинации |
| Цифровые символы | ||
\p{N} | \p{Number} | любые виды цифровых символов в любых языках |
\p{Nd} | \p{Decimal_Digit_Number} | цифры от нуля до девятки в любых языках |
\p{Nl} | \p{Letter_Number} | число, которое может выглядеть как буквы, например как римские числа |
\p{No} | \p{Other_Number} | число, представленное как верхний или нижний индекс, или число, которое не состоит из цифр (исключая числа из идеографических письменностей) |
| Знаки пунктуации | ||
\p{P} | \p{Punctuation} | любой вид пунктуационных знаков |
\p{Pd} | \p{Dash_Punctuation} | любой вид дефисов или тире |
\p{Ps} | \p{Open_Punctuation} | любой вид открывающих скобок |
\p{Pe} | \p{Close_Punctuation} | любой вид закрывающих скобок |
\p{Pi} | \p{Initial_Punctuation} | любой вид открывающих кавычек |
\p{Pf} | \p{Final_Punctuation} | любой вид закрывающих кавычек |
\p{Pc} | \p{Connector_Punctuation} | пунктуационные символы, такие как знаки подчёркивания или соединения слов |
\p{Po} | \p{Other_Punctuation} | любые виды пунктуационных символов, что не являются точками, скобками, кавычками или соединителями |
| Управляющие символы | ||
\p{C} | \p{Other} | невидимые управляющие символы и неиспользуемые позиции |
\p{Cc} | \p{Control} | ASCII или Latin-1 управляющие символы: 0x00-0x1F и 0x7F-0x9F |
\p{Cf} | \p{Format} | невидимые индикаторы форматирования |
\p{Co} | \p{Private_Use} | любые позиции, зарезервированные для личного использования |
\p{Cs} | \p{Surrogate} | половина суррогатных пар в кодировке UTF-16 |
\p{Cn} | \p{Unassigned} | любые позиции, у которых не назначены символы |
Нечёткие регулярные выражения
В некоторых случаях регулярные выражения удобно применить для анализа текстовых фрагментов на естественном языке, то есть написанных людьми, и, возможно, содержащих опечатки либо нестандартные варианты употреблений слов. Например, если проводить опрос (допустим, на веб-сайте) «какой станцией метро вы пользуетесь», может оказаться, что «Невский проспект» посетители могут указать как:
- Невский
- Невск. просп.
- Нев. проспект
- наб. Канала Грибоедова («Канал Грибоедова» — это название второго выхода ст. м. Невский проспект)
Здесь обычные регулярные выражения неприменимы, в первую очередь из-за того, что входящие в образцы слова могут совпадать не очень точно (нечётко), но, тем не менее, было бы удобно описывать регулярными выражениями структурные зависимости между элементами образца, например в нашем случае указать, что совпадение может быть с образцом «Невский проспект» ИЛИ «Канал Грибоедова», притом «проспект» может быть сокращено до «пр» или отсутствовать, а перед «Канал» может находиться сокращение «наб.».
Эта задача сродни полнотекстовому поиску, отличаясь в том, что здесь короткий фрагмент должен сравниваться с набором образцов, а при полнотекстовом поиске, наоборот, образец обычно один, в то время как фрагмент текста очень большой, или задаче разрешения лексической многозначности, которая, однако, не позволяет задать структурирующие отношения между элементами образца.
Существует небольшое количество библиотек, реализующих механизм регулярных выражений с возможностью нечёткого сравнения:
- TRE — бесплатная библиотека на С, использующая синтаксис регулярных выражений, похожий на POSIX (стабильный проект);
- FREJ — open-source библиотека на Java, использующая Lisp-образный синтаксис и лишённая многих возможностей обычных регулярных выражений, но сосредоточенная на различного рода автоматических заменах фрагментов текста (бета-версия).
Реализации
- NFA (англ. nondeterministic finite-state automata — недетерминированные конечные автоматы) используют жадный алгоритм отката, проверяя все возможные расширения регулярного выражения в определённом порядке и выбирая первое подходящее значение. NFA может обрабатывать подвыражения и обратные ссылки. Но из-за алгоритма отката традиционный NFA может проверять одно и то же место несколько раз, что отрицательно сказывается на скорости работы. Поскольку традиционный NFA принимает первое найденное соответствие, он может и не найти самое длинное из вхождений (этого требует стандарт POSIX, и существуют модификации NFA, выполняющие это требование — GNU sed). Именно такой механизм регулярных выражений используется, например, в Perl, Tcl и .NET.
- DFA (англ. deterministic finite-state automata — детерминированные конечные автоматы) работают линейно по времени, поскольку не используют откаты и никогда не проверяют какую-либо часть текста дважды. Они могут гарантированно найти самую длинную строку из возможных. DFA содержит только конечное состояние, следовательно, не обрабатывает обратных ссылок, а также не поддерживает конструкций с явным расширением, то есть не способен обработать и подвыражения. DFA используется, например, в lex и egrep.
См. также
- Шаблон поиска
Примечания
- docs.oracle.com. Дата обращения: 20 августа 2013. Архивировано 9 сентября 2013 года.
- MSDN. Дата обращения: 11 июля 2011. Архивировано 15 сентября 2012 года.
- Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции. Синтаксический анализ. — Мир. — М., 1978. — Т. 2.
- Во многих книгах используются символы ∪, + или ∨ вместо |.
- Никита Попов. The true power of regular expressions (15 июня 2012). Дата обращения: 30 мая 2019. Архивировано 16 мая 2019 года. Перевод: Истинное могущество регулярных выражений Архивная копия от 30 мая 2019 на Wayback Machine.
- Vladimir Komendantsky. Matching Problem for Regular Expressions with Variables // Trends in Functional Programming : 13th International Symposium, TFP 2012, St Andrews, UK, June 12-14, 2012, Revised Selected Papers. — Springer, 2013. — P. 149–150. — ISBN 9783642404474.
- Для использования последовательностей букв необходимо установить правильную кодовую страницу, в которой эти последовательности будут идти в порядке от и до указанных символов. Для русского языка это Windows-1251, ISO 8859-5 и Юникод, так как в DOS-855, DOS-866 и KOI8-R русские буквы не идут одной целой группой или не упорядочены по алфавиту. Отдельное внимание следует уделять буквам с диакритическими знаками, наподобие русских Ё/ё, которые, как правило, разбросаны вне основных диапазонов символов.
- UTS #18: Unicode Regular Expressions (англ.). Дата обращения: 8 августа 2021. Архивировано 8 августа 2021 года.
- Варьируется в зависимости от реализации механизма регулярных выражений
- Существует эквивалентное обозначение [[:word:]]
- Существует эквивалентное обозначение [^[:word:]]
Литература
- Фридл, Дж. Регулярные выражения = Mastering Regular Expressions. — СПб.: «Питер», 2001. — 352 с. — (Библиотека программиста). — ISBN 5-318-00056-8.
- Смит, Билл. Методы и алгоритмы вычислений на строках (regexp) = Computing Patterns in Strings. — М.: «», 2006. — 496 с. — ISBN 0-201-39839-7.
- Форта, Бен. Освой самостоятельно регулярные выражения. 10 минут на урок = Sams Teach Yourself Regular Expressions in 10 Minutes. — М.: «», 2005. — 184 с. — ISBN 5-8459-0713-6.
- Ян Гойвертс, Стивен Левитан. Регулярные выражения. Сборник рецептов = Regular Expressions: Cookbook. — СПб.: «», 2010. — 608 с. — ISBN 978-5-93286-181-3.
- Мельников С. В. Perl для профессиональных программистов. Регулярные выражения. — М.: «», 2007. — 190 с. — (Основы информационных технологий). — ISBN 978-5-94774-797-3.
- Майкл Фицджеральд. Регулярные выражения. Основы. — М.: , 2015. — 144 с. — ISBN 978-5-8459-1953-3.
Ссылки
- Шпаргалка по регулярным выражениям (рус.)
- Справочник и ресурсы по регулярным выражениям (англ.) — учебник и детальное описание синтаксиса с примерами, сравнение различных интерпретаторов и прочее
- MSDN — Знакомство с регулярными выражениями (рус.)
- Реализация механизма обработки регулярных выражений на языке C++
- Теория и методика построения регулярных выражений. Проблема самообразования (рус.)
- Онлайн-генератор регулярных выражений на PHP для новичков (рус.)
- Конструктор регулярных выражений с подсветкой синтаксиса (англ.)
- TRE — Бесплатная и переносимая библиотека для нечёткого сравнения с помощью регулярных выражений
- FREJ (Fuzzy Regular Expressions for Java) — Нечёткие регулярные выражения для Java на SourceForge.net
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Регулярные выражения, Что такое Регулярные выражения? Что означает Регулярные выражения?
Regulya rnye vyrazhe niya angl regular expressions formalnyj yazyk ispolzuemyj v kompyuternyh programmah rabotayushih s tekstom dlya poiska i osushestvleniya manipulyacij s podstrokami v tekste osnovannyj na ispolzovanii metasimvolov simvolov dzhokerov Dlya poiska ispolzuetsya stroka obrazec angl pattern po russki eyo chasto nazyvayut shablonom maskoj sostoyashaya iz simvolov i metasimvolov i zadayushaya pravilo poiska Dlya manipulyacij s tekstom dopolnitelno zadayotsya stroka zameny kotoraya takzhe mozhet soderzhat v sebe specialnye simvoly Dialog Poisk i zamena iz LibreOffice s vklyuchyonnymi regulyarnymi vyrazheniyamiVozmozhnostiRegulyarnye vyrazheniya ispolzuyutsya nekotorymi tekstovymi redaktorami i utilitami dlya poiska i podstanovki teksta Naprimer pri pomoshi regulyarnyh vyrazhenij mozhno zadat shablony pozvolyayushie najti vse posledovatelnosti simvolov kot v lyubom kontekste kak to kot kotleta terrakotovyj najti otdelno stoyashee slovo kot i zamenit ego na koshka najti slovo kot kotoromu predshestvuet slovo persidskij ili cheshirskij ubrat iz teksta vse predlozheniya v kotoryh upominaetsya slovo kot ili koshka Regulyarnye vyrazheniya pozvolyayut zadavat i gorazdo bolee slozhnye shablony poiska ili zameny Rezultatom raboty s regulyarnym vyrazheniem mozhet byt proverka nalichiya iskomogo obrazca v zadannom tekste opredelenie podstroki teksta kotoraya sopostavlyaetsya obrazcu opredelenie grupp simvolov sootvetstvuyushih otdelnym chastyam obrazca Esli regulyarnoe vyrazhenie ispolzuetsya dlya zameny teksta to rezultatom raboty budet novaya tekstovaya stroka predstavlyayushaya soboj ishodnyj tekst iz kotorogo udaleny najdennye podstroki sopostavlennye obrazcu a vmesto nih podstavleny stroki zameny vozmozhno modificirovannye zapomnennymi pri razbore gruppami simvolov iz ishodnogo teksta Chastnym sluchaem modifikacii teksta yavlyaetsya udalenie vseh vhozhdenij najdennogo obrazca dlya chego stroka zameny ukazyvaetsya pustoj Nabor utilit vklyuchaya redaktor sed i filtr grep postavlyaemyh v distributivah UNIX odnim iz pervyh sposobstvoval populyarizacii regulyarnyh vyrazhenij dlya obrabotki tekstov Mnogie sovremennye yazyki programmirovaniya imeyut vstroennuyu podderzhku regulyarnyh vyrazhenij Sredi nih Perl Java PHP JavaScript yazyki platformy NET Framework Python Tcl Ruby Lua Gambas C standart 2011 goda Delphi D Haxe i drugie IstoriyaIstoki regulyarnyh vyrazhenij lezhat v teorii avtomatov teorii formalnyh yazykov i klassifikacii formalnyh grammatik po Homskomu Eti oblasti izuchayut vychislitelnye modeli avtomaty i sposoby opisaniya i klassifikacii formalnyh yazykov V 1940 h gg Uorren Makkalok i Uolter Pitts opisali nejronnuyu sistemu ispolzuya prostoj avtomat v kachestve modeli nejrona Matematik Stiven Klini pozzhe opisal eti modeli ispolzuya svoyu sistemu matematicheskih oboznachenij nazvannuyu regulyarnye mnozhestva Ken Tompson vstroil ih v redaktor QED a zatem v redaktor ed pod UNIX S etogo vremeni regulyarnye vyrazheniya stali shiroko ispolzovatsya v UNIX i UNIX podobnyh utilitah naprimer v expr awk Emacs vi lex i Perl Regulyarnye vyrazheniya v Perl i Tcl proishodyat ot realizacii napisannoj razrabotal biblioteku PCRE angl Perl compatible regular expressions Perl sovmestimye regulyarnye vyrazheniya kotoraya ispolzuetsya vo mnogih sovremennyh instrumentah takih kak PHP i Apache istochnik ne ukazan 2249 dnej V teorii formalnyh yazykovOsnovnaya statya Regulyarnyj yazyk Regulyarnye vyrazheniya sostoyat iz konstant i operatorov kotorye opredelyayut mnozhestva strok i mnozhestva operacij na nih sootvetstvenno Opredeleny sleduyushie konstanty pustoe mnozhestvo pustaya stroka e oboznachaet stroku ne soderzhashuyu ni odnogo simvola ekvivalentno simvolnyj literal a gde a simvol ispolzuemogo alfavita mnozhestvo iz simvolov libo iz drugih mnozhestv i sleduyushie operacii sceplenie konkatenaciya RS oboznachaet mnozhestvo ab a R amp b S naprimer boy girl friend cott boyfriend girlfriend boycott girlcott dizyunkciya cheredovanie R S oboznachaet obedinenie R i S naprimer ab c ab d ef ab c d ef zamykanie Klini zvezda Klini R oboznachaet minimalnoe nadmnozhestvo mnozhestva R kotoroe soderzhit e i zamknuto otnositelno konkatenacii eto est mnozhestvo vseh strok poluchennyh konkatenaciej nulya ili bolee strok iz R naprimer Run Forrest e Run Forrest RunRun RunForrest ForrestRun ForrestForrest RunRunRun RunRunForrest RunForrestRun istochnik ne ukazan 2249 dnej Regulyarnye vyrazheniya vhodyashie v sovremennye yazyki programmirovaniya v chastnosti PCRE imeyut bolshe vozmozhnostej chem to chto nazyvaetsya regulyarnymi vyrazheniyami v teorii formalnyh yazykov v chastnosti v nih est numerovannye obratnye ssylki Eto pozvolyaet im razbirat stroki opisyvaemye ne tolko regulyarnymi grammatikami no i bolee slozhnymi v chastnosti kontekstno svobodnymi grammatikami SintaksisPredstavlenie simvolov Osnovnaya statya Predstavlenie simvolov v regulyarnyh vyrazheniyah Obychnye simvoly literaly i specialnye simvoly metasimvoly Bolshinstvo simvolov v regulyarnom vyrazhenii predstavlyayut sami sebya za isklyucheniem specialnyh simvolov v raznyh tipah regulyarnyh vyrazhenij etot nabor razlichaetsya sm Raznovidnosti regulyarnyh vyrazhenij kotorye mogut byt ekranirovany simvolom obratnaya kosaya cherta dlya predstavleniya samih sebya v kachestve simvolov teksta Mozhno ekranirovat celuyu posledovatelnost simvolov zaklyuchiv eyo mezhdu Q i E Primer Sootvetstviea a ili aa b a ba F a F Q E Analogichno mogut byt predstavleny drugie specialnye simvoly nabory simvolov trebuyushih ekranirovaniya mogut razlichatsya v zavisimosti ot konkretnoj realizacii Chast simvolov kotorye v toj ili inoj realizacii ne trebuyut ekranirovaniya naprimer uglovye skobki lt gt mozhet byt ekranirovana iz soobrazhenij udobochitaemosti Lyuboj simvol Metasimvol tochka oznachaet odin lyuboj simvol no v nekotoryh realizaciyah isklyuchaya simvol novoj stroki Vmesto simvola mozhno ispolzovat s S vse probelnye i neprobelnye simvoly vklyuchaya simvol novoj stroki Simvolnye klassy nabory simvolov Nabor simvolov v kvadratnyh skobkah imenuetsya simvolnym klassom i pozvolyaet ukazat interpretatoru regulyarnyh vyrazhenij chto na dannom meste v stroke mozhet stoyat odin iz perechislennyh simvolov V chastnosti abv zadayot vozmozhnost poyavleniya v tekste odnogo iz tryoh ukazannyh simvolov a 1234567890 zadayot sootvetstvie odnoj iz cifr Vozmozhno ukazanie diapazonov simvolov naprimer A Yaa ya sootvetstvuet vsem bukvam russkogo alfavita za isklyucheniem bukv Yo i yo Nekotorye realizacii regulyarnyh vyrazhenij mogut pozvolyat vklyuchat v simvolnye klassy ne tolko simvoly no i celye stroki Esli trebuetsya ukazat simvoly kotorye ne vhodyat v ukazannyj nabor to ispolzuyut simvol vnutri kvadratnyh skobok naprimer 0 9 oznachaet lyuboj simvol krome cifr Dobavlenie v nabor specialnyh simvolov putyom ekranirovaniya samyj beshitrostnyj sposob Odnako v sovremennyh regulyarnyh vyrazheniyah unasledovan takzhe i tradicionnyj podhod sm Tradicionnye regulyarnye vyrazheniya Nekotorye simvolnye klassy mozhno zamenit specialnymi metasimvolami Simvol Vozmozhnyj ekvivalent Sootvetstvie d 0 9 Cifrovoj simvol D 0 9 Necifrovoj simvol s f n r t v Probelnyj simvol S f n r t v Neprobelnyj simvol small b Primer b Vyrazhenie vida S ili f n r t v budet nahodit stroki nachinayushiesya s neprobelnogo simvola small w A Za z0 9 Bukvennyj ili cifrovoj simvol ili znak podchyorkivaniya bukvy ogranicheny latinicej small b Primer b Vyrazhenie vida w budet nahodit i vydelyat otdelnye slova small W A Za z0 9 Lyuboj simvol krome bukvennogo ili cifrovogo simvola ili znaka podchyorkivaniyaPoziciya vnutri stroki Sleduyushie simvoly pozvolyayut spozicionirovat regulyarnoe vyrazhenie otnositelno elementov teksta nachala i konca stroki granic slova Predstavlenie Poziciya Primer Sootvetstvie Nachalo teksta ili stroki pri modifikatore m a span style background color var color disabled 72777d color var color inverted fff a span aa aaa Konec teksta ili stroki pri modifikatore m a aaa aa span style background color var color disabled 72777d color var color inverted fff a span b Granica slova a b aa span style background color var color disabled 72777d color var color inverted fff a span aa span style background color var color disabled 72777d color var color inverted fff a span ba span style background color var color disabled 72777d color var color inverted fff a span aa span style background color var color disabled 72777d color var color inverted fff a span aa B Ne granica slova Ba B a span style background color var color disabled 72777d color var color inverted fff a span a a span style background color var color disabled 72777d color var color inverted fff a span a G Predydushij uspeshnyj poisk Ga span style background color var color disabled 72777d color var color inverted fff aaa span aaa poisk ostanovilsya na 4 j pozicii tam gde ne nashlos a Specialnye simvoly n perevod stroki r vozvrat karetki Oboznachenie gruppy Kruglye skobki ispolzuyutsya dlya opredeleniya oblasti dejstviya i prioriteta operacij Shablon vnutri gruppy obrabatyvaetsya kak edinoe celoe i mozhet byt kvantificirovan Naprimer vyrazhenie tr au m najdyot posledovatelnost vida tram tram trumtram trum tramtrum Perechislenie Vertikalnaya cherta razdelyaet dopustimye varianty Naprimer gray grey sootvetstvuet gray ili grey Sleduet pomnit chto perebor variantov vypolnyaetsya sleva napravo kak oni ukazany Esli trebuetsya ukazat perechen variantov vnutri bolee slozhnogo regulyarnogo vyrazheniya to ego nuzhno zaklyuchit v gruppu Naprimer gray grey ili gr a e y opisyvayut stroku gray ili grey V sluchae s odnosimvolnymi alternativami predpochtitelen variant gr ae y tak kak sravnenie s simvolnym klassom vypolnyaetsya proshe chem obrabotka gruppy s proverkoj na vse eyo vozmozhnye modifikatory i generaciej obratnoj svyazi Kvantifikaciya poisk posledovatelnostej Kvantifikator posle simvola simvolnogo klassa ili gruppy opredelyaet skolko raz predshestvuyushee vyrazhenie mozhet vstrechatsya Sleduet uchityvat chto kvantifikator mozhet otnositsya bolee chem k odnomu simvolu v regulyarnom vyrazhenii tolko esli eto simvolnyj klass ili gruppa Predstavlenie Chislo povtorenij Ekvivalent Primer Sootvetstvie Nol ili odno 0 1 colou r color colour Nol ili bolee 0 colou r color colour colouur i t d Odno ili bolee 1 colou r colour colouur i t d no ne color Predstavlenie Chislo povtorenij Primer Sootvetstvie i n i Rovno n raz colou 3 r colouuur i m i i n i Ot m do n vklyuchitelno colou 2 4 r colouur colouuur colouuuur i m i Ne menee m colou 2 r colouur colouuur colouuuur i t d i n i Ne bolee n colou 3 r color colour colouur colouuur Chasto ispolzuetsya posledovatelnost dlya oboznacheniya lyubogo kolichestva lyubyh simvolov mezhdu dvumya chastyami regulyarnogo vyrazheniya Simvolnye klassy v sochetanii s kvantifikatorami pozvolyayut ustanavlivat sootvetstviya s realnymi tekstami Naprimer stolbcami cifr telefonami pochtovymi adresami elementami HTML razmetki i dr Esli simvoly ne obrazuyut kvantifikatora ih specialnoe znachenie ignoriruetsya Zhadnaya i lenivaya kvantifikaciya Primer ispolzovaniya zhadnyh i lenivyh vyrazhenij Vyrazhenie lt gt sootvetstvuet stroke soderzhashej neskolko tegov HTML razmetki celikom span style background color var color disabled 72777d color var color inverted fff lt p gt lt b gt Vikipediya lt b gt svobodnaya enciklopediya v kotoroj lt i gt kazhdyj lt i gt mozhet izmenit ili dopolnit lyubuyu statyu lt p gt span Chtoby vydelit otdelnye tegi mozhno primenit lenivuyu versiyu etogo vyrazheniya lt gt Ej sootvetstvuet ne vsya pokazannaya vyshe stroka a otdelnye tegi vydeleny cvetom span style background color var color disabled 72777d color var color inverted fff lt p gt lt b gt span Vikipediya span style background color var color disabled 72777d color var color inverted fff lt b gt span svobodnaya enciklopediya v kotoroj span style background color var color disabled 72777d color var color inverted fff lt i gt span kazhdyj span style background color var color disabled 72777d color var color inverted fff lt i gt span mozhet izmenit ili dopolnit lyubuyu statyu span style background color var color disabled 72777d color var color inverted fff lt p gt span V nekotoryh realizaciyah kvantifikatoram v regulyarnyh vyrazheniyah sootvetstvuet maksimalno dlinnaya stroka iz vozmozhnyh kvantifikatory yavlyayutsya zhadnymi angl greedy Eto mozhet okazatsya znachitelnoj problemoj Naprimer chasto ozhidayut chto vyrazhenie lt gt najdyot v tekste tegi HTML Odnako esli v tekste est bolee odnogo HTML tega to etomu vyrazheniyu sootvetstvuet celikom stroka soderzhashaya mnozhestvo tegov span style background color var color disabled 72777d color var color inverted fff lt p gt lt b gt Vikipediya lt b gt svobodnaya enciklopediya v kotoroj lt i gt kazhdyj lt i gt mozhet izmenit ili dopolnit lyubuyu statyu lt p gt span Etu problemu mozhno reshit dvumya sposobami Uchityvat simvoly ne sootvetstvuyushie zhelaemomu obrazcu lt gt gt dlya vysheopisannogo sluchaya Opredelit kvantifikator kak nezhadnyj lenivyj angl lazy bolshinstvo realizacij pozvolyayut eto sdelat dobaviv posle nego znak voprosa Ispolzovanie lenivyh kvantifikatorov mozhet povlech za soboj obratnuyu problemu kogda vyrazheniyu sootvetstvuet slishkom korotkaya v chastnosti pustaya stroka Zhadnyj Lenivyj i n i i n i Takzhe obshej problemoj kak zhadnyh tak i lenivyh vyrazhenij yavlyayutsya tochki vozvrata dlya perebora variantov vyrazheniya Tochki stavyatsya posle kazhdoj iteracii kvantifikatora Esli interpretator ne nashyol sootvetstviya posle kvantifikatora to on nachinaet vozvrashatsya po vsem ustanovlennym tochkam pereschityvaya ottuda vyrazhenie po drugomu Revnivaya kvantifikaciya sverhzhadnaya Pri poiske vyrazheniya span style color red text decoration inherit text decoration color red a span span style color blue text decoration inherit text decoration color blue a span span style color magenta text decoration inherit text decoration color magenta a span v stroke aaaaa interpretator pojdyot priblizitelno po sleduyushemu puti span style color red text decoration inherit text decoration color red aaaaa span span style color red text decoration inherit text decoration color red aaaa span span style color red text decoration inherit text decoration color red aaaa span span style color blue text decoration inherit text decoration color blue a span span style color red text decoration inherit text decoration color red aaa span span style color red text decoration inherit text decoration color red aaa span span style color blue text decoration inherit text decoration color blue aa span span style color red text decoration inherit text decoration color red aaa span span style color blue text decoration inherit text decoration color blue a span span style color red text decoration inherit text decoration color red aaa span span style color blue text decoration inherit text decoration color blue a span span style color magenta text decoration inherit text decoration color magenta a span i tolko tut proveriv vse tochki vozvrata ostanovitsya Pri ispolzovanii revnivogo kvantifikatora budet vypolnen tolko pervyj shag algoritma V otlichie ot obychnoj zhadnoj kvantifikacii revnivaya possessive kvantifikaciya ne tolko staraetsya najti maksimalno dlinnyj variant no eshyo i ne pozvolyaet algoritmu vozvrashatsya k predydushim shagam poiska dlya togo chtoby najti vozmozhnye sootvetstviya dlya ostavshejsya chasti regulyarnogo vyrazheniya Ispolzovanie revnivyh kvantifikatorov uvelichivaet skorost poiska osobenno v teh sluchayah kogda stroka ne sootvetstvuet regulyarnomu vyrazheniyu Krome togo revnivye kvantifikatory mogut byt ispolzovany dlya isklyucheniya nezhelatelnyh sovpadenij Zhadnyj Revnivyj i n i i n i Primer Sootvetstvieab xa a span style background color var color disabled 72777d color var color inverted fff abxa b a b span bxaa no ne abxa span style background color var color disabled 72777d color var color inverted fff abxaa span tak kak bukva b a b uzhe zanyata Eto analogichno atomarnoj gruppirovke Gruppirovka Obratnaya svyaz Odno iz primenenij gruppirovki povtornoe ispolzovanie ranee najdennyh grupp simvolov podstrok blokov otmechennyh podvyrazhenij zahvatov Pri obrabotke vyrazheniya podstro ki najdennye po shablonu vnutri gruppy sohranyayutsya v otdelnoj oblasti pamyati i poluchayut nomer nachinaya s edinicy Kazhdoj podstroke sootvetstvuet para skobok v regulyarnom vyrazhenii Obychno podderzhivaetsya do 9 numerovannyh podstrok s nomerami ot 1 do 9 no nekotorye interpretatory pozvolyayut rabotat s bo lshim kolichestvom Vposledstvii v predelah dannogo regulyarnogo vyrazheniya mozhno ispolzovat oboznacheniya ot 1 do 9 dlya proverki na sovpadenie s ranee najdennoj podstrokoj V nekotoryh realizaciyah vmesto bekslesha ispolzuetsya znak dollara Naprimer regulyarnoe vyrazhenie ta tu 1 najdyot stroku ta ta ili tu tu no propustit stroku ta tu Kvantifikaciya gruppy traktuetsya kak mnogokratnoe sohranenie podstroki pod odnim i tem zhe nomerom to est zapominaetsya poslednee vhozhdenie naprimer regulyarnoe vyrazhenie 1 najdyot stroku abcc no propustit abca Takzhe ranee najdennye podstro ki mozhno ispolzovat pri zamene po regulyarnomu vyrazheniyu V takom sluchae v zameshayushij tekst vstavlyayutsya te zhe oboznacheniya chto i v predelah samogo vyrazheniya Gruppirovka bez obratnoj svyazi Esli gruppa ispolzuetsya tolko dlya gruppirovki i eyo rezultat v dalnejshem ne potrebuetsya to mozhno ispolzovat gruppirovku vida i shablon i Pod rezultat takoj gruppirovki ne vydelyaetsya otdelnaya oblast pamyati i sootvetstvenno ej ne naznachaetsya nomer Eto polozhitelno vliyaet na skorost vypolneniya vyrazheniya no ponizhaet udobochitaemost Atomarnaya gruppirovka Atomarnaya gruppirovka vida gt i shablon i tak zhe kak i gruppirovka bez obratnoj svyazi ne sozdayot obratnyh svyazej V otlichie ot neyo takaya gruppirovka zapreshaet vozvrashatsya nazad po stroke esli chast shablona uzhe najdena Primer Sootvetstvie Sozdavaemye gruppya bc b x cc span style background color var color disabled 72777d color var color inverted fff abcc span axcc abcc span style background color var color disabled 72777d color var color inverted fff axcc span a span style background color var color disabled 72777d color var color inverted fff b span ccaxcc abcca span style background color var color disabled 72777d color var color inverted fff x span cca bc b x cc span style background color var color disabled 72777d color var color inverted fff abcc span axcc abcc span style background color var color disabled 72777d color var color inverted fff axcc span neta gt bc b x cc abcc span style background color var color disabled 72777d color var color inverted fff axcc span no ne span style background color var color disabled 72777d color var color inverted fff abcc span axcc variant x najden ostalnye proignorirovany neta gt x xa ne najdyotsya span style background color var color disabled 72777d color var color inverted fff axxxa span vse x zanyaty i net vozvrata vnutr gruppy Atomarnaya gruppirovka vypolnyaetsya eshyo bystree chem gruppirovka bez obratnoj svyazi i sohranyaet processornoe vremya pri vypolnenii ostalnogo vyrazheniya tak kak zapreshaet proverku lyubyh drugih variantov vnutri gruppy kogda odin variant uzhe najden Eto ochen polezno pri optimizacii grupp so mnozhestvom razlichnyh variantov Eto analogichno revnivoj kvantifikacii Modifikatory Modifikatory dejstvuyut s momenta vhozhdeniya i do konca regulyarnogo vyrazheniya ili protivopolozhnogo modifikatora Nekotorye interpretatory mogut primenit modifikator ko vsemu vyrazheniyu a ne s momenta ego vhozhdeniya Sintaksis Opisanie i Vklyuchaet nechuvstvitelnost vyrazheniya k registru simvolov angl case insensitivity i Vyklyuchaet s Vklyuchaet rezhim sootvetstviya tochki simvolam perenosa stroki i vozvrata karetki s Vyklyuchaet m Simvoly i vyzyvayut sootvetstvie tolko posle i do simvolov novoj stroki m s nachalom i koncom teksta x Vklyuchaet rezhim bez uchyota probelov mezhdu chastyami regulyarnogo vyrazheniya i pozvolyaet ispolzovat dlya kommentariev x Vyklyuchaet Gruppy modifikatory mozhno obedinyat v odnu gruppu i sm Takaya gruppa vklyuchaet rezhim i i vyklyuchaet rezhimy s i m Esli ispolzovanie modifikatorov trebuetsya tolko v predelah gruppy to nuzhnyj shablon ukazyvaetsya vnutri gruppy posle modifikatorov i posle dvoetochiya Naprimer i i tv set najdyot TVset no ne TVSET Kommentarii Dlya dobavleniya kommentariev v regulyarnoe vyrazhenie mozhno ispolzovat gruppy kommentarii vida i kommentarij i Takaya gruppa interpretatorom polnostyu ignoriruetsya i ne proveryaetsya na vhozhdenie v tekst Naprimer vyrazhenie A tut kommentarij B sootvetstvuet stroke AB Prosmotr vperyod i nazad V bolshinstve realizacij regulyarnyh vyrazhenij est sposob proizvodit poisk fragmenta teksta prosmatrivaya no ne vklyuchaya v najdennoe okruzhayushij tekst kotoryj raspolozhen do ili posle iskomogo fragmenta teksta Prosmotr s otricaniem ispolzuetsya rezhe i sledit za tem chtoby ukazannye sootvetstviya naprotiv ne vstrechalis do ili posle iskomogo tekstovogo fragmenta Predstavlenie Vid prosmotra Primer Sootvetstvie i shablon i Pozitivnyj prosmotr vperyod Lyudovik XVI LyudovikHV span style background color var color disabled 72777d color var color inverted fff Lyudovik span XVI span style background color var color disabled 72777d color var color inverted fff Lyudovik span XVIII LyudovikLXVII LyudovikHHL i shablon i Negativnyj prosmotr vperyod s otricaniem Lyudovik XVI span style background color var color disabled 72777d color var color inverted fff Lyudovik span XV LyudovikHVI LyudovikHVIII span style background color var color disabled 72777d color var color inverted fff Lyudovik span LXVII span style background color var color disabled 72777d color var color inverted fff Lyudovik span XXL lt i shablon i Pozitivnyj prosmotr nazad lt Sergej Ivanov Sergej span style background color var color disabled 72777d color var color inverted fff Ivanov span Igor Ivanov lt i shablon i Negativnyj prosmotr nazad s otricaniem lt Sergej Ivanov Sergej Ivanov Igor span style background color var color disabled 72777d color var color inverted fff Ivanov span Poisk po usloviyu Vo mnogih realizaciyah regulyarnyh vyrazhenij sushestvuet vozmozhnost vybirat po kakomu puti pojdyot proverka v tom ili inom meste regulyarnogo vyrazheniya na osnovanii uzhe najdennyh znachenij Predstavlenie Poyasnenie Primer Sootvetstvie i esli i i to i i inache i Esli operaciya prosmotra uspeshna to dalee vypolnyaetsya chast i to i inache vypolnyaetsya chast i inache i V vyrazhenii mozhet ispolzovatsya lyubaya iz chetyryoh operacij prosmotra Sleduet uchityvat chto operaciya prosmotra nulevoj shiriny poetomu chasti i to i v sluchae pozitivnogo ili i inache i v sluchae negativnogo prosmotra dolzhny vklyuchat v sebya opisanie shablona iz operacii prosmotra lt a m p ma span style background color var color disabled 72777d color var color inverted fff m span span style background color var color disabled 72777d color var color inverted fff p span ap i n i i to i i inache i Esli n ya gruppa vernula znachenie to poisk po usloviyu vypolnyaetsya po shablonu i to i inache po shablonu i inache i a 1 m p m span style background color var color disabled 72777d color var color inverted fff am span span style background color var color disabled 72777d color var color inverted fff p span a span style background color var color disabled 72777d color var color inverted fff p span Flagi V nekotoryh yazykah naprimer v JavaScript realizovany t n flagi kotorye rasshiryayut funkcii RegExp Flagi ukazyvayutsya posle regulyarnogo vyrazheniya poryadok flagov znacheniya ne imeet Tipichnye flagi g globalnyj poisk obrabatyvayutsya vse sovpadeniya s shablonom poiska i registr bukv ne imeet znacheniya m mnogostrochnyj poisk s tekst traktuetsya kak odna stroka v etom sluchae metasimvolu tochka sootvetstvuet lyuboj odinochnyj simvol vklyuchaya simvol novoj stroki u unicode traktovka Vyrazhenie mozhet soderzhat specialnye patterny harakternye dlya yunikoda naprimer p Lu zaglavnye bukvy Flag ukazyvaetsya posle patterna naprimer vot tak 0 9 b m b Raznovidnosti regulyarnyh vyrazhenijBazovye regulyarnye vyrazheniya POSIX angl basic regular expressions BRE Tradicionnye regulyarnye vyrazheniya UNIX Sintaksis bazovyh regulyarnyh vyrazhenij na dannyj moment opredelyon POSIX om kak ustarevshij no on do sih por shiroko rasprostranyon iz soobrazhenij obratnoj sovmestimosti Mnogie UNIX utility ispolzuyut takie regulyarnye vyrazheniya po umolchaniyu V dannuyu versiyu vklyucheny metasimvoly dejstvuet tolko v nachale vyrazheniya dejstvuet tolko v konce vyrazheniya pervonachalnyj variant dlya pervonachalnyj variant dlya i n i gde n nomer ot 1 do 9 Osobennosti Zvyozdochka dolzhna sledovat posle vyrazheniya sootvetstvuyushego edinichnomu simvolu Primer xyz Vyrazhenie i blok i sleduet schitat nepravilnym V nekotoryh sluchayah ono sootvetstvuet nulyu ili bolee povtorenij stroki i blok i V drugih ono sootvetstvuet stroke i blok i Vnutri simvolnogo klassa specialnye znacheniya simvolov v osnovnom ignoriruyutsya Osobye sluchai Chtoby dobavit simvol v nabor ego sleduet pomestit tuda ne pervym Chtoby dobavit simvol v nabor ego sleduet pomestit tuda pervym ili poslednim Naprimer shablon DNS imeni kuda mogut vhodit bukvy cifry minus i tochka razdelitel 0 9a zA Z lyuboj simvol krome minusa i cifry 0 9 Chtoby dobavit simvol ili v nabor ego sleduet pomestit tuda pervym Naprimer ab sootvetstvuet a ili b Rasshirennye regulyarnye vyrazheniya POSIX angl extended regular expressions ERE Sintaksis v osnovnom analogichen tradicionnomu Otmeneno ispolzovanie obratnoj kosoj cherty dlya metasimvolov i Obratnaya kosaya cherta pered metasimvolom otmenyaet ego specialnoe znachenie sm Predstavlenie specialnyh simvolov Otvergnuta teoreticheski neregulyarnaya konstrukciya i n i Dobavleny metasimvoly Sm takzhe Simvolnye klassy POSIX Regulyarnye vyrazheniya sovmestimye s Perl Osnovnaya statya PCRE Perl sovmestimye regulyarnye vyrazheniya angl Perl compatible regular expressions PCRE imeyut bolee bogatyj sintaksis chem dazhe POSIX ERE Po etoj prichine ochen mnogie prilozheniya ispolzuyut imenno Perl sovmestimyj sintaksis regulyarnyh vyrazhenij Regulyarnye vyrazheniya sovmestimye s Unicode Unicode eto nabor simvolov celyu kotorogo yavlyaetsya opredelenie vseh simvolov i simvolov so vseh chelovecheskih yazykov zhivyh i myortvyh Regulyarnye vyrazheniya rasschitannye na mnozhestvo yazykov takim obrazom ne privyazyvayutsya k konkretnym naboram simvolov a opisyvayut ih soglasno prinyatym pravilam Tak naprimer vyrazhenie dlya nahozhdeniya zaglavnyh bukv v lyubom alfavite budet vyglyadet tak p Lu Nekotorye vyrazheniya regexp unicode predstavlenie funkcionalnostvozmozhnaya kratkaya forma vozmozhnaya polnaya formaBukvy p L p Letter lyubye bukvy lyubogo yazyka p Ll p Lowercase Letter bukvy nizhnego registra strochnye iz teh chto imeyut propisnoj variant napisaniya p Lu p Uppercase Letter bukvy verhnego registra propisnye dlya teh chto imeyut strochnyj variant napisaniya p Lt p Titlecase Letter propisnaya bukva kotoraya poyavlyaetsya s nachala slova iz strochnyh bukv p L amp p Cased Letter bukva kotoraya imeet kak propisnoj tak i strochnyj varianty napisaniya p Lm p Modifier Letter specialnye simvoly kotorye ispolzuyutsya kak bukvy p Lo p Other Letter simvol ili ideogramma kotoraya ne imeet propisnyh i strochnyh variantov napisaniyaSpecialnye simvoly p M p Mark simvoly vstavlennye dlya kombinirovaniya s drugimi simvolami naprimer akcenty umlyauty oborachivayushie skobki p Mn p Non Spacing Mark simvol vstavlennyj dlya kombinirovaniya s drugimi simvolami ne zanimaya dopolnitelnoj shiriny p Mc p Spacing Combining Mark simvoly vstavlennye dlya kombinirovaniya s drugimi simvolami zanimaya dopolnitelnuyu shirinu kak vo mnogih vostochnyh yazykah p Me p Enclosing Mark simvoly kotorye oborachivayut simvol Naprimer krug kvadrat i t pProbely i razdeliteli p Z p Separator lyubye vidy probelov ili nevidimyh razdelitelej p Zs p Space Separator probelnye simvoly kotorye nevidimy no imeyut shirinu p Zl p Line Separator simvol razdeleniya v vide linii U 2028 p Zp p Paragraph Separator znak paragrafa U 2029Matematicheskie simvoly p S p Symbol matematicheskie simvoly simvoly valyuty simvoly psevdografiki ramki i t p p Sm p Math Symbol lyubye matematicheskie simvoly p Sc p Currency Symbol lyubye simvoly valyut p Sk p Modifier Symbol kombinirovannyj simvol pometka kak kombinaciya samogo simvola i simvola otmetki p So p Other Symbol razlichnye simvoly ne matematicheskie ne simvoly valyut ili ih kombinaciiCifrovye simvoly p N p Number lyubye vidy cifrovyh simvolov v lyubyh yazykah p Nd p Decimal Digit Number cifry ot nulya do devyatki v lyubyh yazykah p Nl p Letter Number chislo kotoroe mozhet vyglyadet kak bukvy naprimer kak rimskie chisla p No p Other Number chislo predstavlennoe kak verhnij ili nizhnij indeks ili chislo kotoroe ne sostoit iz cifr isklyuchaya chisla iz ideograficheskih pismennostej Znaki punktuacii p P p Punctuation lyuboj vid punktuacionnyh znakov p Pd p Dash Punctuation lyuboj vid defisov ili tire p Ps p Open Punctuation lyuboj vid otkryvayushih skobok p Pe p Close Punctuation lyuboj vid zakryvayushih skobok p Pi p Initial Punctuation lyuboj vid otkryvayushih kavychek p Pf p Final Punctuation lyuboj vid zakryvayushih kavychek p Pc p Connector Punctuation punktuacionnye simvoly takie kak znaki podchyorkivaniya ili soedineniya slov p Po p Other Punctuation lyubye vidy punktuacionnyh simvolov chto ne yavlyayutsya tochkami skobkami kavychkami ili soedinitelyamiUpravlyayushie simvoly p C p Other nevidimye upravlyayushie simvoly i neispolzuemye pozicii p Cc p Control ASCII ili Latin 1 upravlyayushie simvoly 0x00 0x1F i 0x7F 0x9F p Cf p Format nevidimye indikatory formatirovaniya p Co p Private Use lyubye pozicii zarezervirovannye dlya lichnogo ispolzovaniya p Cs p Surrogate polovina surrogatnyh par v kodirovke UTF 16 p Cn p Unassigned lyubye pozicii u kotoryh ne naznacheny simvolyNechyotkie regulyarnye vyrazheniyaV nekotoryh sluchayah regulyarnye vyrazheniya udobno primenit dlya analiza tekstovyh fragmentov na estestvennom yazyke to est napisannyh lyudmi i vozmozhno soderzhashih opechatki libo nestandartnye varianty upotreblenij slov Naprimer esli provodit opros dopustim na veb sajte kakoj stanciej metro vy polzuetes mozhet okazatsya chto Nevskij prospekt posetiteli mogut ukazat kak Nevskij Nevsk prosp Nev prospekt nab Kanala Griboedova Kanal Griboedova eto nazvanie vtorogo vyhoda st m Nevskij prospekt Zdes obychnye regulyarnye vyrazheniya neprimenimy v pervuyu ochered iz za togo chto vhodyashie v obrazcy slova mogut sovpadat ne ochen tochno nechyotko no tem ne menee bylo by udobno opisyvat regulyarnymi vyrazheniyami strukturnye zavisimosti mezhdu elementami obrazca naprimer v nashem sluchae ukazat chto sovpadenie mozhet byt s obrazcom Nevskij prospekt ILI Kanal Griboedova pritom prospekt mozhet byt sokrasheno do pr ili otsutstvovat a pered Kanal mozhet nahoditsya sokrashenie nab Eta zadacha srodni polnotekstovomu poisku otlichayas v tom chto zdes korotkij fragment dolzhen sravnivatsya s naborom obrazcov a pri polnotekstovom poiske naoborot obrazec obychno odin v to vremya kak fragment teksta ochen bolshoj ili zadache razresheniya leksicheskoj mnogoznachnosti kotoraya odnako ne pozvolyaet zadat strukturiruyushie otnosheniya mezhdu elementami obrazca Sushestvuet nebolshoe kolichestvo bibliotek realizuyushih mehanizm regulyarnyh vyrazhenij s vozmozhnostyu nechyotkogo sravneniya TRE besplatnaya biblioteka na S ispolzuyushaya sintaksis regulyarnyh vyrazhenij pohozhij na POSIX stabilnyj proekt FREJ open source biblioteka na Java ispolzuyushaya Lisp obraznyj sintaksis i lishyonnaya mnogih vozmozhnostej obychnyh regulyarnyh vyrazhenij no sosredotochennaya na razlichnogo roda avtomaticheskih zamenah fragmentov teksta beta versiya RealizaciiNFA angl nondeterministic finite state automata nedeterminirovannye konechnye avtomaty ispolzuyut zhadnyj algoritm otkata proveryaya vse vozmozhnye rasshireniya regulyarnogo vyrazheniya v opredelyonnom poryadke i vybiraya pervoe podhodyashee znachenie NFA mozhet obrabatyvat podvyrazheniya i obratnye ssylki No iz za algoritma otkata tradicionnyj NFA mozhet proveryat odno i to zhe mesto neskolko raz chto otricatelno skazyvaetsya na skorosti raboty Poskolku tradicionnyj NFA prinimaet pervoe najdennoe sootvetstvie on mozhet i ne najti samoe dlinnoe iz vhozhdenij etogo trebuet standart POSIX i sushestvuyut modifikacii NFA vypolnyayushie eto trebovanie GNU sed Imenno takoj mehanizm regulyarnyh vyrazhenij ispolzuetsya naprimer v Perl Tcl i NET DFA angl deterministic finite state automata determinirovannye konechnye avtomaty rabotayut linejno po vremeni poskolku ne ispolzuyut otkaty i nikogda ne proveryayut kakuyu libo chast teksta dvazhdy Oni mogut garantirovanno najti samuyu dlinnuyu stroku iz vozmozhnyh DFA soderzhit tolko konechnoe sostoyanie sledovatelno ne obrabatyvaet obratnyh ssylok a takzhe ne podderzhivaet konstrukcij s yavnym rasshireniem to est ne sposoben obrabotat i podvyrazheniya DFA ispolzuetsya naprimer v lex i egrep Sm takzheRegulyarnye vyrazheniya Knigi v VikiuchebnikeMediafajly na Vikisklade Shablon poiskaPrimechaniyadocs oracle com neopr Data obrasheniya 20 avgusta 2013 Arhivirovano 9 sentyabrya 2013 goda MSDN neopr Data obrasheniya 11 iyulya 2011 Arhivirovano 15 sentyabrya 2012 goda Aho A Ulman Dzh Teoriya sintaksicheskogo analiza perevoda i kompilyacii Sintaksicheskij analiz Mir M 1978 T 2 Vo mnogih knigah ispolzuyutsya simvoly ili vmesto Nikita Popov The true power of regular expressions neopr 15 iyunya 2012 Data obrasheniya 30 maya 2019 Arhivirovano 16 maya 2019 goda Perevod Istinnoe mogushestvo regulyarnyh vyrazhenij Arhivnaya kopiya ot 30 maya 2019 na Wayback Machine Vladimir Komendantsky Matching Problem for Regular Expressions with Variables Trends in Functional Programming 13th International Symposium TFP 2012 St Andrews UK June 12 14 2012 Revised Selected Papers Springer 2013 P 149 150 ISBN 9783642404474 Dlya ispolzovaniya posledovatelnostej bukv neobhodimo ustanovit pravilnuyu kodovuyu stranicu v kotoroj eti posledovatelnosti budut idti v poryadke ot i do ukazannyh simvolov Dlya russkogo yazyka eto Windows 1251 ISO 8859 5 i Yunikod tak kak v DOS 855 DOS 866 i KOI8 R russkie bukvy ne idut odnoj celoj gruppoj ili ne uporyadocheny po alfavitu Otdelnoe vnimanie sleduet udelyat bukvam s diakriticheskimi znakami napodobie russkih Yo yo kotorye kak pravilo razbrosany vne osnovnyh diapazonov simvolov UTS 18 Unicode Regular Expressions angl Data obrasheniya 8 avgusta 2021 Arhivirovano 8 avgusta 2021 goda Variruetsya v zavisimosti ot realizacii mehanizma regulyarnyh vyrazhenij Sushestvuet ekvivalentnoe oboznachenie word Sushestvuet ekvivalentnoe oboznachenie word LiteraturaFridl Dzh Regulyarnye vyrazheniya Mastering Regular Expressions SPb Piter 2001 352 s Biblioteka programmista ISBN 5 318 00056 8 Smit Bill Metody i algoritmy vychislenij na strokah regexp Computing Patterns in Strings M 2006 496 s ISBN 0 201 39839 7 Forta Ben Osvoj samostoyatelno regulyarnye vyrazheniya 10 minut na urok Sams Teach Yourself Regular Expressions in 10 Minutes M 2005 184 s ISBN 5 8459 0713 6 Yan Gojverts Stiven Levitan Regulyarnye vyrazheniya Sbornik receptov Regular Expressions Cookbook SPb 2010 608 s ISBN 978 5 93286 181 3 Melnikov S V Perl dlya professionalnyh programmistov Regulyarnye vyrazheniya M 2007 190 s Osnovy informacionnyh tehnologij ISBN 978 5 94774 797 3 Majkl Ficdzherald Regulyarnye vyrazheniya Osnovy M 2015 144 s ISBN 978 5 8459 1953 3 SsylkiShpargalka po regulyarnym vyrazheniyam rus Spravochnik i resursy po regulyarnym vyrazheniyam angl uchebnik i detalnoe opisanie sintaksisa s primerami sravnenie razlichnyh interpretatorov i prochee MSDN Znakomstvo s regulyarnymi vyrazheniyami rus Realizaciya mehanizma obrabotki regulyarnyh vyrazhenij na yazyke C Teoriya i metodika postroeniya regulyarnyh vyrazhenij Problema samoobrazovaniya rus Onlajn generator regulyarnyh vyrazhenij na PHP dlya novichkov rus Konstruktor regulyarnyh vyrazhenij s podsvetkoj sintaksisa angl TRE Besplatnaya i perenosimaya biblioteka dlya nechyotkogo sravneniya s pomoshyu regulyarnyh vyrazhenij FREJ Fuzzy Regular Expressions for Java Nechyotkie regulyarnye vyrazheniya dlya Java na SourceForge net


