Справочники, инструменты, документация

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

Регулярные выражения в блокноте Notepad++, представляют из себя мощный инструмент в борьбе с рутиной.
Notepad: Регулярные выражения

Якоря

Термин Определение
Начало строки ^
Начало текста \A
Конец строки $
Конец текста \Z
Конец документа \z
Граница слова \b
Не граница слова \B
Начало слова \<
Конец слова \>

Кванторы

Термин Определение
0 или больше *
0 или больше, нежадный *?
1 или больше +
1 или больше, нежадный +?
0 или 1 ?
0 или 1, нежадный ??
Ровно 3 {3}
3 или больше {3,}
3, 4 или 5 {3,5}
3, 4 или 5, нежадный {3,5}?
Количество вхождений от «a» до «b» {a,b}

Символы

Термин Определение
Точка представляет один любой символ .
Пробел \s
Любой символ, кроме пробельного \S
Буква, цифра или подчёркивание _ \w
Любой символ, кроме цифры, буквы или знака подчеркивания \W
Любая цифра \d
Любой символ, но не цифра \D
Любая цифра [0-9]
Любая буква от a до z (весь латинский набор символов) в нижнем регистре [a-z]
Любая буква от a до z в ВЕРХНЕМ регистре [A-Z]
Любая буква от a до z в любом регистре [a-zA-Z] или [a-Z]
Любые русские слова ([а-яё]+)
Любые русские буквы [а-яё]
Любой текст между началом и концом строки (^.*$)
Отрицание, любой символ кроме «d» или «a» ^ пример: [^da]
Интервал, любой симво от «a» до «z» - пример: [a-z]
Набор из букв и цифр (латиница) ^[a-zA-Z0-9]+$
Набор из букв и цифр (латиница + кириллица) ^[а-яА-ЯёЁa-zA-Z0-9]+$

Специальные символы

Термин Определение
Экранирующий символ (не соответствует ничему, только экранирует метасимволы !$()*+.<>?[]^{|}) \
Экранирующий символ (не соответствует ничему, только экранирует все символы вплоть до \E) \Q
Экранирующий символ (не соответствует ничему, только прекращает экранирование, начатое \Q) \E
Новая строка \n
Возврат каретки \r
Табуляция \t
Вертикальная табуляция \v
Новая страница \f
Буква в кодировке UTF-8 при использовании модификатора u \pL
Звуковой сигнал \a
Возврат на один символ [\b]
Escape-символ \e
Именованый символ \N{name}

Диапазоны

Термин Определение
Означает, что предшествующий символ может повторяться (0 или более раз) *
Любой набор символов (например, условие <p> .*</p> — найдет все что между тегами <p>...</p>) .*
Не сохраняет заданный диапазон .*?
Сохраняет заданный диапазон, если использовать группы \1, \2, \3 ... (.*?)
Любой символ, кроме переноса строки (\n) .
a или b (a\|b)
Группа, подмаска, вложенное выражение ( ... )
Пассивная группа (?: ... )
Групповой символ []
Логическое «или», в случае с односимвольными альтернативами используйте [] |
Диапазон (a или b или c) [abc]
Не a, не b и не c [^abc]
Буква между a и q [a-q]
Буква в верхнем регистре между A и Q [A-Q]
Цифра между 0 и 7 [0-7]
n-ая группа/подшаблон \n

Примеры

Действие Найти Заменить
Удалить текст от ХХХ до ХХХ (применяем выражение .*?) <!DOCTYPE.*?<h1> \r\n (пустая строка)
Разбиение строк <br /> \r\n
Удалить пробелы в конце строки после последнего символа \s+$ \0
Находим электронные адреса в тексте \w+@\w+.\w+
Находим электронные адреса в тексте ^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$
Находим электронные адреса в тексте [A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}
Находим дату в формате 2021-17-12 или 21-17-12 \d{2,4}-\d{2}-\d{2}
Найти знак вопроса между двух символов .\?.
Удалить текст между двумя символами, например кавычками "([^"]*)" \0
Удалить все картинки <img\s+[^>]*> \0
Удалить все комментарии <!--.*?--> \0
Находим цифры (от 1 до 2 знаков) с точкой \d{1,2}\.
Находим «Читать далее» Читать далее: http://.+$
Удаляем ссылки <a\s+[^>]*>(.*?)</a>
Удаляем ссылки, сохраняя содержимое <a .*?> и </a>
Получить адреса картинок (адрес будет в первой группе) <img\s+[^>]*src=['"]([^'^"]+)['"][^>]*>
Получить адрес ссылки и анкор (адрес ссылки будет в первой группе, а анкор во второй) <a\s+[^>]*href=['"]([^'^"]+)['"][^>]*>(.*?)</a>
Получить текст между определенными тегами (ИМЯ_ТЕГА заменить на нужное, результат будет хранится во второй группе) <(ИМЯ_ТЕГА)>(.*?)</\1>
Удалить атрибуты тега (ИМЯ_ТЕГА заменить на нужное, например <(div)\s[^>]+>, очистить несколько видов тегов, например <(div|p|strong)\s[^>]+>) <(ИМЯ_ТЕГА)\s[^>]+> <\1>
Найти любые двухзначные, в данном случае цифры ([0-9][0-9]*.)
Находим все строки, где число начинается в самом начале строки, содержит минимум 2 цифры, и в конце может содержать любое количество пробелов до самого конца строки ^\d{2,}\s*$
Ищет пустые строки содержащие пробел ^\s*$ или ^[ ]*$
Добавить noindex и nofollow для ссылок <a\s+([^>]+)>([^<]*)</a> <noindex><a \1 rel="nofollow">\2</a></noindex>
Добавить тег <br /> после каждого абзаца ([\n\r]+) <br />\1
Убрать из тега <img> все атрибуты кроме src <img\s+[^>]*(src=['"][^'^"]*['"])[^>]*> <img \1 />
Как заключить картинки в <div style="...">...</div> (<img\s+[^>]*>) <div style="...">\1</div>
Найти запятую между двух букв, в любом регистре, например a,б ([а-Я])\,([а-Я]) \1, \2
Поиск номера телефона в формате (495) 935-4888 и замена на 4959354888 ^\((.*?)\)\s(.*?)\-(.*?)$ \1\2\3
Удалить определенное количество первых строк (КОЛИЧЕСТВО заменить на число строк, которое нужно удалить) ([^\r\n]+[\r\n]+){КОЛИЧЕСТВО}(.*) \2
Удалить начальные пробелы и пустые строки ^\s
Удалить конечные пробелы и пустые строки [\s]+$
Замена тегов абзаца на нужные <p>(.*?)</p> <h4>\1</h4>
Удалить пустые строки с пробелами ^\s*$ \0
Удалить пустые строки, пробелы в конце строк \s+$ \0
Удалить пустые строки \n\r или [\r\n]+ или \r\n\r\n \0
Найти новую строку и заключить её в теги абзаца <p></p> (снять отметку «Новые строки») (^.*$) <p>\1</p>
Заменить последнюю кавычку (найти набор символов только в конце слов) \b" »
Заменить первую кавычку (найти набор символов только в начале слов): "\b «
Найти слова в верхнем регистре на русском языке (поставить отметку «Учитывая регистр») [А-ЯЁ]{3,}
Удалить все html-теги, оставить только текст [<].*?> или <[^>]*> или <[^<]+?>
Найти весь текст до определенного слова [\W\w]*(СЛОВО)
Найти весь текст после определенного слова (СЛОВО)[\W\w]*
Найти весь текст между словами или словосочетаниями (СЛОВО1)[\W\w]*(СЛОВО2)
Убрать дату вида: XX.XX.XXXX (вариант 1 используется когда все даты имеют строгий формат - 2 цифры дня, 2 цифры месяца и 4 года, а вариант 2 - когда день и месяц могут быть одноциферными) \d{2}\.\d{2}\.\d{4} или \d{1,2}\.\d{1,2}\.\d{4}
Найти Mac-адрес ([0-9a-fA-F]{2}([:-]|$)){6}$|([0-9a-fA-F]{4}([.]|$)){3}
Найти время в формате HH:MM:SS ^([0-1]\d|2[0-3]:()[0-5]\d){2}$
Найти широту или долготу -?\d{1,3}\.\d+
Найти UUID ^[0-9A-Fa-f]{8}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{4}\-[0-9A-Fa-f]{12}$
Целые числа и числа с плавающей точкой (разделитель точка) \-?\d+(\.\d{0,})?
Найти дату в формате DD/MM/YYYY (0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d
Найти дату в формате YYYY-MM-DD [0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])
Найти пароль (строчные и прописные латинские буквы, цифры) ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\s).*$
Поиск имя пользователя (с ограничением 2-20 символов (буквы и цифры), первый символ обязательно буква) ^[a-zA-Z][a-zA-Z0-9-_\.]{1,20}$
Поиск IPv6 ((^|:)([0-9a-fA-F]{0,4})){1,8}$
Поиск IPv4 ((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)
Поиск домена (например abcd.com) ^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}$
Поиск набора из букв и цифр (латиница и кириллица) ^[а-яА-ЯёЁa-zA-Z0-9]+$
Поиск ICQ ([1-9])+(?:-?\d){4,}
Поиск номера кредитки [0-9]{13,16}