Регулярные выражения значительно облегчают жизнь не только IT-специалиста, вебмастера, но и продвинутого пользователя компьютера. Если вы хотите ускорить свою работу, связанную с обработкой больших данных, то стоит однажды разобраться с принципами RegEx, и каждый раз, когда нужно заменить однотипный текст, вырезать или найти текст по заданному шаблону, вы будете экономить свое время. Используют регулярные выражения в Notepad++, Visial Studio Code, Atom и других редакторах кода, в Excel при использовании VBA, а также в таблицах Гугл (по умолчанию), в некоторых плагинах вордпрес и т.д.
Что такое регулярные выражения RegEx
Регулярные выражения - это специальные шаблоны по которым выполняется поиск, замена текста или набора символов, а также такие операции, как извлечение и проверку на соответствие. Используется во всех языках программирования, например, в JavaScript, Python, Java и других.
Шпаргалка по значениям регулярных выражений
Эта таблица поможет составить свои регулярные выражения на основе специальных общепринятых шаблонов.
RegEx | Что делает | Пример |
---|---|---|
а | Найти букву a | |
abc | Найти последовательность символов abc | |
[ab] | Найти любую из букв набора [ab], т.е. или a или b | Например, задав поиск по шаблону [дср], будут найдены слова сота, рота, дота. |
[a-z] | Поиск любого символа в диапазоне от a до z | [a-f] находит любой из строчных символов, который лежит в диапазоне от a до f Для поиска любой буквы русского алфавита нужно задать регулярное выражение: [А-Яа-яЁё] |
[^x] | Найти все буквы, цифры, символы, кроме буквы x | [^aeiou] Находит все символы, не являющиеся латинскими гласными, включая знаки препинания, цифры и пробелы. |
? | Предыдущий элемент является необязательным, он не обязательно должен присутствовать | [1-9][0-9]? Находит числа от 1 до 9 и от 10 до 99 |
. | Найти любой символ, кроме новой строки, перевода строки, возврата каретки | |
+ | Найти предыдущий элемент от 1 до бесконечности | 1+ находит 1, 11, 111 и т.д. |
* | Найти предыдущий элемент от 0 до бесконечности раз | [a-zA-Z]*cat находит строки, заканчивающиеся на cat, в том числе и просто cat |
{x,y} | Повторите предыдущий элемент от x до y раз. | 1{2,4} находит числа 11, 111 и 1111 |
(…) | Сохраните все, что находится внутри скобок, для использования при замене. | Пример, если нужно оставить некоторое сочетание символов при замене, то заключаем это сочетание в круглые скобки, а в строке замены пишем \1 \2 или $2 $1, присваивая порядковый номер круглым скобкам. Таким образом можно менять символы местами (как частный случай использования). |
\1 \2 \3 | Восстановить строку, сохраненную в скобках, для использования при замене | \1ый добавляет ый к сохраненной строке |
(.|.) | Оператор ИЛИ | Поиск (с|р|кв)ота найдет слова сота, рота, квота |
\w | Сочетание клавиш для символов слова (буквы, цифры и подчеркивания) | Не подходит для русского алфавита, для поиска русских букв нужно пользоваться диапазонами [А-Яа-яЁё] |
\d | Сокращение для цифр, то же самое, что [0-9] | |
\b | Означает начало или конец слова | Например, рег выражение \bбар\b будет находить только слова бар и Бар, а также слово бар со сзнаками препинаниями после (Бар.) и игнорировать такие слова, как баран, барабан, амбар. |
\ | Экранирующий оператор, используется чаще всего для знаков препинания, символов, кавычек | \. находит точку . \? находит знак вопроса \+ находит + |
\s | находит пробел | |
\W | находит не букву | |
\D | поиск не цифру | |
\B | не граница слова | |
\A и \Z | начало и конец текста соответственно | |
^ | начало строки | ^\d.+ находит все строки, начало которых начинается на цифру |
$ | конец строки | !$ - находит все восклицательные знаки в конце строки. |
\n | новая строка, перенос строки | в нотепад часто работает не просто \n, а \r\n |
Примеры рабочих шаблонов регулярных выражений
Напишу самые часто используемые шаблоны RegEx для Notepad++, а также для других редакторов кода.
- Убрать перенос строки
- В Нотепад работает два варианта поиска переноса строки, а именно \n или \r\n
Для того, чтобы убрать перенос строк, необходимо в строчку "Найти" вписать \r\n, а в строчку "Заменить на" поставить пробел, чтобы текст не слился.
Не забудьте поставить флажок на режиме поиска "Расширенный" или "Регулярные выражения". - Таким же образом можно сжать код, но в этом случае не нужно в строке "Заменить на" ставить пробел.
- В Нотепад работает два варианта поиска переноса строки, а именно \n или \r\n
- Делаем переносы строк
Иногда нужна обратная операция - из слитного текста сделать построчный текст. Например, нужно сделать переносы строк перед словом "Ответ".
Найти: Ответ
Заменить на: \nОтвет - Вырезать html-коды из текста.
Найти:[<].*?>
Заменить на: пустая строка - Найти дату формата dd.mm.yyyy
Найти:\d{2}\.\d{2}\.\d{4}
- Поиск email-адресов
рег. выражение:[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
- Поиск номеров банковских карт платежной системы Мир.
RegEx:220[0|2](\d{9,12}|\s\d{4}\s\d{4}\s\d{4})
* Ищет номера карт, которые начинаются с 2200 или 2202 и имеют вид 2200 XXXX XXXX XXXX или 2202XXXXXXXXXXXX - Найти ссылки изображений
В этом вам поможет регулярное выражение:(https|http).+.(png|jpg|gif)
- Найти ссылки
(https|http).+.(ru|com|info|net)[\\.+]?
- Найти дату формата yyyy-mm-dd и привести ее в привычный краткий формат вида dd.mm.yyyy
Найти:(\d{4})-(\d{2})-(\d{2})
Замена:\3.\2.\1
- Поиск телефонных номеров в Notepad++:
\+?\d{1,3}[-.\s]?\d{3}[-.\s]?\d{3}[-.\s]?\d{2,4}[-.\s]?\d{2}?
Ищет номера, записанные разными способами: +7 XXX XXX XX XX и +XXXXXXXXXXX, и 8-XXX-XX-XX и т.д. - Удаление лишних пробелов (сдвоенных, строенных и т.д.)
Найти:\s{2,}
Заменить на: пусто - Удаление пустых строк
Найти:\r?\n\r?\n
Замена:\n
- Как обернуть каждую строку в теги или в кавычки (другие знаки препинания):
Поиск рег выражения:^(.+)$
Замена на:<b>\1</b>
Как пользоваться RegEx в Нотепад
Чтобы воспользоваться быстрым поиском и заменой при помощи рег выражений в Notepad++, необходимо воспользоваться горячими клавишами CTRL + H или выбрать команды из меню: Поиск > Замена. Для корректной работы обязательно установите флажок возле режима поиска "Регуляр. выражения". Введите регулярные выражения в строки "Найти" и "Заменить на". Для поиска нажмите на кнопка "Найти далее", для замены первого найденного элемента "Заменить", а для замены во всем документе - "Заменить все".

Использование RegEx в Гугл таблицах
В таблицах Google можно использовать замену при помощи специальной формулы =REGEXREPLACE("текст или ячейка";"регулярное выражение";"фрагмент для замены").
Пример использования: =REGEXREPLACE(A1;"\.ru";"\.сom") - замена домена в зоне ru на com