Ссылка - что означает это регулярное выражение?
Что это?
Это сборник общих вопросов и ответов. Это также вики сообщества, поэтому каждый приглашается принять участие в ее поддержке.
Почему это?
regex страдает от вопросов типа " дайте мне код ze " и плохих ответов без объяснения причин. Эта ссылка предназначена для предоставления ссылок на качественные вопросы и ответы.
Какой объем?
Эта ссылка предназначена для следующих языков: php , perl , javascript , python , ruby , java , .net .
Это может быть слишком широко, но эти языки имеют одинаковый синтаксис. Для конкретных функций есть тег языка за ним, например:
- Что такое группы балансировки регулярных выражений? .сеть
Ответы
Часто задаваемые вопросы о регулярных выражениях Stack Overflow
См. Также множество общих советов и полезных ссылок на странице сведений о тегах регулярных выражений .
Онлайн-уроки
Квантификаторы
- Ноль или более-:
*
: жадный ,*?
: неохотно ,*+
: притяжательное - Одно- или-больше:
+
: жадный ,+?
: неохотно ,++
: притяжательное ?
: необязательный (ноль или один)- Мин / макс диапазоны (все включено):
{n,m}
: между п & м ,{n,}
н-или-более ,{n}
: ровно п - Различия между жадным, неохотным (также известным как «ленивый», «нелюбопытный») и притяжательным квантификатором:
- Квантификаторы жадности против упорства и притяжения
- Подробное обсуждение различий между жадным и не жадным
- В чем разница между
{n}
и{n}?
- Может ли кто-нибудь объяснить мне притяжательные квантификаторы? PHP , Perl , Java , Рубин
- Эмуляция притяжательных квантификаторов .net
- Ссылки, не связанные с переполнением стека: из Oracle , regular-expressions.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? Ява - Сокращение:
- Разряд:
\d
: цифры ,\D
: нецифровой - Слово символ (буква, цифра, подчеркивание):
\w
: буквенный символ ,\W
: не-буквенный символ - Пробелы:
\s
: пробел ,\S
: непробельным
- Разряд:
- Категории Unicode (
\p{L}, \P{L}
и т. Д.)
Последовательности побега
- Горизонтальный пробел:
\h
: пробел или вкладки ,\t
: вкладка - Новые строки:
- Отрицаемые последовательности: пробельные
\H
: Не горизонтальная символ пробела,\V
: Не вертикальный символ пробела,\N
: Номера линии подачи символов PCRE php5 Java-8 - Другой:
\v
: вертикальная табуляция ,\e
: экранирующий символ
Якоря
^
: начало строки / ввод ,\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)
: Обзор и Правила именования (Non-Stack Overflow ссылка) - Другие языки: питон , .net , Perl , и PHP
(?P<groupname>regex)
(?<groupname>regex)
(?<groupname>regex)
(?P<groupname>regex)
(?<groupname>regex)
- Общая именованная ссылка на группу захвата на
Обзоры
- Lookaheads:
(?=...)
: положительный ,(?!...)
: отрицательные - Утверждения назад:
(?<=...)
: положительный ,(?<!...)
: отрицательный (не поддерживается JavaScript ) - Ограничения просмотра назад в:
- Альтернативы Lookbehind:
Модификаторы
- Большинство ароматов:
g
: глобальный ,i
: нечувствительны к регистру ,u
: юникода ,x
: пробельные-продлен c
: текущая позиция perle
: выражение php perlo
: once rubym
: многострочный PHP Perl Python Java - .net Java ,m
(не) многострочный рубинs
: однострочный (не поддерживается javascript или ruby ),s
обходной javascriptS
: изучить phpU
: ungreedy php r- Как преобразовать preg_replace e в preg_replace_callback?
- Что такое встроенные модификаторы?
- Что такое '? -Mix' в регулярном выражении Ruby
Другие:
|
: Чередование оператор (OR) ,.
: любой символ ,[.]
: буквенный символ точки- Какие специальные символы нужно экранировать?
- Глаголы управления ( PHP и Perl ):
(*PRUNE)
,(*SKIP)
,(*FAIL)
и(*F)
- только php :
(*BSR_ANYCRLF)
- только php :
- Рекурсия ( PHP и Perl ):
(?R)
,(?0)
и(?1)
,(?-1)
,(?&groupname)
Общие задачи
- Получим строку между двумя фигурными скобками:
{...}
- Сопоставить (или заменить) шаблон, за исключением ситуаций s1, s2, s3 ...
- Как найти все идентификаторы видео YouTube в строке с помощью регулярного выражения?
- Проверка:
- Интернет: адреса электронной почты , URL-адреса (хост / порт: альтернативы с регулярным и нерегулярным выражениями ), пароли
- Числовые: число , минимальные и максимальные диапазоны (например, 1-31) , номера телефонов , дата.
- Анализ HTML с помощью регулярного выражения: см. «Общая информация> Когда не следует использовать регулярное выражение».
Расширенный Regex-Fu
- Строки и числа:
- Регулярное выражение для соответствия строке, не содержащей слова
- Как этот паттерн PCRE обнаруживает палиндромы?
- Сопоставьте строки, длина которых равна четвертой степени
- Как это регулярное выражение находит треугольные числа?
- Как определить, является ли число простым с регулярным выражением?
- Как сопоставить средний символ в строке с регулярным выражением?
- Другие:
- Как мы можем сопоставить ^ nb ^ n с регулярным выражением Java?
- Соответствие вложенным скобкам
- Соответствие "вертикального" регулярного выражения в "изображении" ASCII
- Список вопросов о регулярных выражениях на Code Golf, получивших большое количество голосов
- Как заставить два квантификатора повторяться одинаковое количество раз?
- Невозможно сопоставить регулярное выражение:
(?!a)a
- Сопоставить / удалить / заменить,
this
кроме контекстов A, B и C - Сопоставить вложенные скобки с регулярным выражением без использования рекурсии или балансирующих групп?
Информация о вкусе
(За исключением отмеченных значком *
, этот раздел содержит ссылки, не относящиеся к переполнению стека.)
- Ява
- Официальная документация: Pattern 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
- .СЕТЬ
- Официальная документация:
- Механизм Boost regex: общий синтаксис , синтаксис Perl (используется TextPad, Sublime Text, UltraEdit, ... ???)
- Общая информация о JavaScript 1.5 и объект RegExp
- .NET
- PHP: синтаксис шаблона ,
preg_match
- Python: операции с регулярными выражениями ,
search
vsmatch
, инструкции - Splunk: регулярное выражение терминология и синтаксис и регулярное выражение команды
- Tcl: синтаксис регулярных выражений , справочная страница ,
regexp
команда - Visual Studio Найти и заменить
Основная информация
(Ссылки, отмеченные значком *
, не относятся к переполнению стека.)
- Другие ресурсы общей документации: изучение регулярных выражений , * Regular-expressions.info , * запись в Википедии , * RexEgg , проект Open-Directory
- DFA против NFA
- Генерация строк, соответствующих регулярному выражению
- Книги: Джеффри Фридл « Овладение регулярными выражениями»
- Когда не использовать регулярные выражения:
- Некоторые люди, столкнувшись с проблемой, думают: «Я знаю, я буду использовать регулярные выражения». Теперь у них две проблемы. (сообщение в блоге, написанноеоснователем Stack Overflow ) *
- Не используйте регулярное выражение для анализа HTML:
- Не надо .
- Что ж, может быть ... если вы действительно настроены (другие ответы на этот вопрос тоже хороши)
- Не надо .
Примеры регулярных выражений, которые могут привести к сбою механизма регулярных выражений
Инструменты: тестировщики и объяснители
(Этот раздел содержит ссылки, не связанные с переполнением стека.)
Онлайн (* включает заменяющий тестер, + включает сплит-тестер) :
- Debuggex (также есть репозиторий полезных регулярных выражений) javascript , python , pcre
- * Регулярные выражения 101 php , pcre , python , javascript
- Regex Pal , regular-expressions.info javascript
- Rubular ruby
- * + 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- * + php PCRE и POSIX, javascript
regex.larsolavtorvik.com
- Перезагрузить javascript ruby .net
Не в сети:
- Microsoft Windows: RegexBuddy (анализ), RegexMagic (создание), Expresso (анализ, создание, бесплатно)