Ответ 1
Часто задаваемые вопросы о регулярных выражениях Qaru
Интернет-уроки
Кванторы
- Ноль или более:
*
: жадный,*?
: неохотный,*+
: притяжательный - Один или несколько:
+
: жадный,+?
: неохотный,++
: притяжательный ?
: необязательно (ноль или один)- Мин./Макс. Диапазоны (все включено):
{n,m}
: между n и m,{n,}
: больше или меньше,{n}
: ровно n - Различия между жадным, неохотным (a.k.a. "lazy", "ungreedy") и собственническим квантификатором:
- Жадность против неохотно против притяжательных квантификаторов
- Углубленное обсуждение различий между жадными и не жадными
- В чем разница между
{n}
и{n}?
- Может ли кто-нибудь объяснить мне "Квантификаторы притяжений"? php, perl, java, ruby
- Эмуляция собственнических квантификаторов .net
- Ссылки не из Qaru: из Oracle, регулярные-выражения .info
Классы персонажей
- В чем разница между квадратными скобками и круглыми скобками?
[...]
: любой символ,[^...]
: отрицание/любой символ, кроме[^]
соответствует любому одному символу, включая символы новой строки javascript[\w-[\d]]
/[a-z-[qz]]
: установить вычитание .net, xml-schema, xpath, JGSoft[\w&&[^\d]]
: установить пересечение java, ruby 1. 9+[[:alpha:]]
: классы символов POSIX- Почему
[^\\D2]
,[^[^0-9]2]
,[^2[^0-9]]
получают разные результаты в Java? java - Стенография:
- Цифра:
\d
: цифра,\D
: не цифра - Символ слова (буква, цифра, подчеркивание):
\w
: символ слова,\W
: несловесный символ - Пробелы:
\s
: пробелы,\S
: не пробелы
- Цифра:
- Категории Юникода (
\p{L}, \P{L}
и т.д.)
Escape-последовательности
- Горизонтальный пробел:
\h
: пробел или табуляция,\t
: вкладка - Newlines:
- Отрицательные последовательности пробелов:
\H
: не горизонтальный символ пробела,\V
: не вертикальный символ пробела,\N
: символ не перевод строки pcre php5 java-8 - Другое:
\v
: вертикальная вкладка,\e
: escape-символ
Якоря
^
: начало строки/ввода,\b
: граница слова и\B
: граница не слова,$
: конец строки/ввода\A
: начало ввода,\Z
: конец ввода php, perl, ruby\z
: самый конец ввода (\Z
в Python) .net, php, pcre, java, ruby, icu, swift, objective-c\G
: начало матча php, perl, ruby
(Также см. "Информация о вкусе → Java → Функции в Matcher
")
Группы
(...)
: группа захвата,(?:)
: группа без захвата\1
: обратная ссылка и ссылка на группу захвата,$1
: ссылка на группу захвата- Что означает подшаблон
(?i:regex)
? - Что означает "P" в
(?P<group_name>regexp)
? (?>)
: атомарная группа или независимая группа,(?|)
: сброс ветки- Именованные группы захвата:
- Ссылка на генеральную именованную группу захвата в
regular-expressions.info
- java:
(?<groupname>regex)
: Обзор и правил именования (ссылки не из Qaru) - Другие языки:
(?P<groupname>regex)
python,(?<groupname>regex)
.net,(?<groupname>regex)
perl,(?P<groupname>regex)
и(?<groupname>regex)
php
- Ссылка на генеральную именованную группу захвата в
Lookarounds
- "Lookahead":
(?=...)
: положительный,(?!...)
: отрицательный - "Lookbehind" s:
(?<=...)
: положительный,(?<!...)
: отрицательный (не поддерживается javascript) - "Сзади" пределы в:
- "Смотри сзади" альтернативы:
Модификаторы
- Большинство разновидностей:
g
: глобальный,i
: без учета регистра,u
: юникод,x
: пробел- расширенный c
: текущая позиция perle
: выражение php perlo
: один раз rubym
: многострочный php perl python javascript .net java,m
:( не) многострочный rubys
: одна строка (не поддерживается javascript или ruby),s
обходной путь javascriptS
: исследование phpU
: нелюбовь php r- Как преобразовать preg_replace e в preg_replace_callback?
- Что такое встроенные модификаторы?
- Что такое "? -mix" в регулярном выражении Ruby
Другой:
|
: оператор чередования (ИЛИ),.
: любой символ,[.]
: символ буквальной точки- Какие специальные символы должны быть экранированы?
- Управляющие глаголы (php и perl):
(*PRUNE)
,(*SKIP)
,(*FAIL)
и(*F)
- Только php:
(*BSR_ANYCRLF)
- Только php:
- Рекурсия (php и perl):
(?R)
,(?0)
и(?1)
,(?-1)
,(?&groupname)
Общие задачи
- Получите строку между двумя фигурными скобками:
{...}
- Совпадение (или замена) шаблона, за исключением ситуаций s1, s2, s3...
- Как найти все идентификаторы видео YouTube в строке с помощью регулярных выражений?
- Проверка:
- Интернет: адреса электронной почты, URL-адреса (хост/порт: альтернативы regex и без регулярных выражений), пароли
- Числовой: число, диапазоны min-max (например, 1-31), номера телефонов, дата
- Синтаксический анализ HTML с помощью regex: см. "Общая информация> Когда не использовать Regex"
Продвинутый Regex-Fu
- Строки и числа:
- Регулярное выражение для соответствия строке, которая не содержит слова
- Как этот PCRE паттерн обнаруживает палиндромы?
- Сопоставьте строки, длина которых составляет четвертую степень
- Как это регулярное выражение находит треangularьные числа?
- Как определить, является ли число простым с регулярным выражением?
- Как сопоставить средний символ в строке с регулярным выражением?
- Другие:
- Как мы можем сопоставить ^ n b ^ n с регулярным выражением Java?
- Соответствие вложенным скобкам
- "Вертикальное" регулярное выражение в ASCII-изображении
- Список часто задаваемых вопросов о регулярных выражениях в Code Golf
- Как заставить два квантификатора повторяться одинаковое количество раз?
- Регулярное выражение, которое невозможно сопоставить:
(?!a)a
- Сопоставить/удалить/заменить
this
за исключением контекстов A, B и C - Сопоставить вложенные скобки с регулярным выражением, не используя рекурсивные или уравновешивающие группы?
Информация о вкусе
(За исключением отмеченных *
, этот раздел содержит ссылки не из Кару.)
- Ява
- Официальная документация: Шаблон Javadoc, Учебник по регулярным выражениям Oracle
- Различия между функциями в
java.util.regex.Matcher
:matches()
): соответствие должно быть привязано как к input-start, так и к -endfind()
): совпадение может быть где угодно во входной строке (подстроке)lookingAt()
: совпадение должно быть привязано только к вводу-запуску- (Общие сведения о якорях см. в разделе "Якоря")
- Единственные
java.lang.String
функции, которые принимают регулярные выражения:matches(s)
,replaceAll(s,s)
,replaceFirst(s,s)
,split(s)
,split(s,i)
- *(упрямое и) подробное обсуждение недостатков и отсутствующих функций в
java.util.regex
- .СЕТЬ
- Официальная документация:
- Механизм ускорения регулярных выражений: Общий синтаксис, Синтаксис Perl (используется TextPad, Sublime Text, UltraEdit,...???)
- JavaScript 1.5 общая информация и объект RegExp
- .NET MySQL Oracle Perl5 версия 18.2
- PHP: синтаксис шаблона,
preg_match
- Python: Операции с регулярными выражениями,
search
vsmatch
, инструкции - Splunk: терминология и синтаксис регулярных выражений и команда регулярных выражений
- Tcl: синтаксис регулярных выражений, справочная страница,
regexp
команда - Visual Studio найти и заменить
Общая информация
(Ссылки, помеченные *
, являются ссылками не из Кару.)
- Другие общие источники документации: Изучение регулярных выражений, *Regular-expressions.info, *Запись в Википедии, *RexEgg, Проект открытого каталога
- DFA против NFA
- Создание строк, соответствующих регулярному выражению
- Книги: Джеффри Фридл Овладение регулярными выражениями
- Когда не следует использовать регулярные выражения:
- Некоторые люди, сталкиваясь с проблемой, думают: "Я знаю, я буду использовать регулярные выражения". Теперь у них есть две проблемы. (сообщение в блоге, написанное основателем Qaru) *
- Не используйте регулярные выражения для анализа HTML:
- Не. Пожалуйста, только не
- Ну, может быть... если вы действительно настроены (другие ответы на этот вопрос тоже хороши)
Примеры регулярных выражений, которые могут привести к сбою механизма регулярных выражений
Инструменты: тестеры и объяснения
(Этот раздел содержит ссылки не из Qaru.)
Онлайн (* включает тестер замены, + включает тестер разделения):
- Debuggex (также есть хранилище полезных регулярных выражений) javascript, python, pcre
- *Регулярные выражения 101 php, pcre, python, javascript
- Regex Pal, регулярные выражения .info javascript
- Рубулярный ruby RegExr Regex Hero dotnet
- * + regexstorm.net .net
- * RegexPlanet: Java java, Go go, Haskell haskell, JavaScript javascript, .NET dotnet, Perl perl php PCRE php, Python python, Ruby ruby, XRegExp xregexp
freeformatter.com
xregexp- * +
regex.larsolavtorvik.com
php PCRE и POSIX, javascript - Refiddle javascript ruby .net
Offline:
- Microsoft Windows: RegexBuddy (анализ), RegexMagic (создание), Expresso (анализ, создание, бесплатно)