Создание сайтов на заказ. Высокое качетсво по доступной цене
Подписаться на новости
Наша группа Vkontakte

Регулярные выражения

. ^ $ * + ? { } [ ] \ | ( ) спец символы

simple text — будет искать текст: simple text
\ — экранирование спец символов
| — или. Для односимвольных использовать []
+ — одно или больше
^ — начало строки. ^a — найдет все начинающиеся с буквы а, например абв
$ — конец строки. 5$ — поиск всех сочетаний цифр заканчивающихся на 5: 6575
\f — конец (разрыв) страницы
. — любой символ, кроме символа новой строки
[xyz] аналог (?:x|y|z)- любые символы заключенные в скобки
[^xyz] — любые символы кроме заключенных в скобки
[a-z] — любые символы в диапазоне a-z
x|y — x или y
[] групповой символ, любой символ из находящихся внутри
() подмаска, вложенное выражение, но запоминает результат
<(.*?)> — запомнить все что внутри найденных <>
<(?:.*?)> — исключит запоминание
[абв(где)] — а или б или в или где
[\] внутри [] нужно экранировать только символы \ — []
\D или [^\d] — любой символ, кроме десятичной цифры
[^ab] — любой символ кроме a или b
\n — перевод строки

Предопределённые классы

\s — пробел, табуляция, перенос строки
\d — любые цифры
\w — символы латиницы, цифр и нижнего подчеркивания «_»
Если классы писать с заглавной \W — противоположный символ. Любой кроме латиницы, цифр, «_»
\w\s — можно сразу 2 класса
\S или \D — любой кроме пробелов, табуляции, переноса строки и цифр
\b — граница слова. \B — не граница слова. \bТакси\b — найти все слова, кроме «Таксист». \bТакси\B — пропустит «Такси», но найдет «Таксист»
[^\s]* — любые символы кроме пробела 0 или больше раз, для поиска отдельных слов
\d\d/\d\d/\d{4} — найти все даты в формате ДД/ММ/ГГГГ, те 98/76/5432
\b\w{4}\b — найти все слова из 4 букв
[-+]?\d+ — найти — или + или пусто, далее число из 1 и более цифр

Диапазоны
[а-в] — от а, до в. То есть а, б, в
[а-гО-Уя] — от а, до г. А так же только заглавные от О, до У и буква я

Квантификаторы (кол-во повторений)
{n} — ровно n раз для последнего символа перед ним. Слово{3} найти «Словооо»
{m,n} — m до n включительно
{m,} — не меньше чем m раз
{,n} — не больше чем n раз
* аналог {0,} — 0 или больше для последнего символа перед ним
abcd* — найти все вхождения abcd
? аналог {0,1} — 0 или 1 для последнего символа перед ним

Ленивая квантификация
<.*> — найти от 1-й < до последней >. По умолчанию квантификаторы жадные, поэтому найти всю страницу целиком со всеми входящими острыми скобками. Поэтому
<[^>]*> — запрет «>» внутри <>
<.*?> — ? знак вопроса делает квантификатор перед ним ленивым.

Утверждение
?! — отрицание что в нем находится.
(?!werty) — только не werty
q(?!werty) — найти “q”, за которой нет “werty”
[^\s]*q(?!werty)[^\s]* — тоже но в отдельных словах

Примеры:

Java[^script] — искать java и 1 символ кроме символов script. То есть не найти JavaS или Javas в словах JavaScript и Javascript
Но найти JavaJ в слове javajava
м.л.ко — найти молоко и имолокоихлеб если молоко написано слитно.
\w\w\w — найти Год, f_3, qwe в слове qwert
\S123 — найти X123, я123, !123 в !123456, ничего в 1 + 123456 a? — найдет 1 или 0 вхождений с буквой а
+ аналог {1,} — 1 или больше для последнего символа перед ним
ab*+a — исключает из найденного уже использованную a
<Tag.*?[(:?Нужный текст)][^>]*>[^<]*</Tag> — найти Нужный текст, включая теги Tag

Статьи по регулярке
https://habr.com/post/349860/ — для новичков на хабре
https://tproger.ru/articles/regexp-for-beginners/#429_21 — для новичков
http://website-lab.ru/article/regexp/shpargalka_po_regulyarnyim_vyirajeniyam/ кратко
https://regex101.com/r/aGn8QC/2- проверка с пояснениями, песочница
https://regexper.com — показывает понятные диаграмы регулярки


Комментарии:

Добавить комментарий