Регулярные выражения в Notepad++
Опубликовано: 02.09.2018
Регулярные выражения в Notepad++ делают работу с текстом на порядок легче и быстрее. В статье на конкретной задаче покажу пару реальных примеров, которые может взять за основу каждый. На самом деле всё легче, чем может показаться.
Как использовать регулярные выражения в Notepad++
Регулярные выражения
Я не буду разъяснять основы этого понятия, материалов в Сети более чем достаточно и любой желающий может самостоятельно вбить в поисковик эту фразу - «Регулярные выражения».
Мне кажется, что для не программиста это несколько сложновато. Поэтому всё простым языком, чтобы было понятно всем. При этом, надеюсь, ясно, что статья предназначена не для специалистов .
[Notepad++] Как быстро удалить нужные окончания строк
Итак, регулярное выражение - это некий шаблон, по которому осуществляется поиск текста. В таком шаблоне задаются определённые условия, которым должна удовлетворять искомая строка. И возможности тут поистине безграничны.
Далее всё конкретно применительно к Notepad++ .
Например, нам нужно найти все даты. Давайте попробуем просто словами определить набор условий для этой цели. Как должна выглядеть дата:
Начинаться с числа - одна или две цифры. Затем либо тире, либо точка. Затем месяц - одна или две цифры. Опять либо тире, либо точка. Год - от двух до четырёх цифр.В обычном поиске такое сделать невозможно. А вот при помощи регулярных выражений - запросто. И выглядеть такое выражение будет вот так:
\d{1,2}+(-|\.)+\d{1,2}+(-|\.)+\d{2,4}Испугались? Не стоит. Просто можете брать и использовать. Такое регулярное выражение найдёт вот такую дату: 28.09.2016 , и вот такую: 5-10-2016 , и даже такую: 02-12.56 .
Как это всё делать на практике покажу ниже на своей реальной задаче. Там, кстати, использовались другие регулярные выражения.
Для чего мне понадобились регулярные выражения в NotePad++
Кому не терпится быстрее посмотреть практическое применение регулярных выражений в NotePad++, тот может этот раздел пропустить. Для остальных я расскажу как я докатился до жизни такой...
Сравните эти два скрина, которые я сделал с записи видеорегистратора.
Оригинальные субтитры Субтитры после обработкиСлева - оригинал, справа - после моей обработки.
Видеорегистратор создаёт файл субтитров, который и содержит данные, выводимые в видео. Но данные эти для меня избыточны. Мне не нужны координаты и высота над уровнем моря. В идеале только скорость, дата и время.
В оригинале файл выглядел так:
1 00:00:00,000 --> 00:00:01,000 58 km/h 28.09.2016 08:22:09 866 m lat: 43.21206 lon: 76.91992 2 00:00:01,000 --> 00:00:02,000 60 km/h 28.09.2016 08:22:10 866 m lat: 43.21195 lon: 76.91977 3 00:00:02,000 --> 00:00:03,000 60 km/h 28.09.2016 08:22:11 866 m lat: 43.21185 lon: 76.91963Причём здесь я показал только три блока из файла субтитров, но их-то на самом деле может быть несколько сотен, в зависимости от длительности видео. Тем не менее, я решил убрать лишнюю информацию из файла. Для этого, как вы уже догадались, мне нужно было в каждом блоке удалить то, что на картинке обведено красной рамкой.
Конечно же вручную лопатить сотню-другую строковых блоков и убирать лишнее просто нереально.
Но вот тут, как раз и пришли на помощь регулярные выражения .
Применение регулярных выражений в NotePad++
Итак, задача № 1 - найти все строки, начинающиеся с «lat:». Для этого используем вот такое регулярное выражение: ^lat:(.*)
Краткий разбор: символ ^ означает начало строки. После этого символа пишем то, с чего должна наша строка начинаться, в моём случае это lat: , в вашем может быть что угодно. И завершаем комбинацией (.*) , которая означает что после lat: может быть любое количество любых символов.
Чтобы не заморачиваться в выражение ^lat:(.*) просто вместо «lat:» подставьте своё значение.
Задача № 2 - найти те части строк, которые содержат 3 или 4 цифры и после них буковку «m».
Для этого используем вот такое регулярное выражение: [0-9]{3,}(.m)
Краткий разбор: [0-9] указывает на то, что тут должны быть только цифры. {3,} - определяет количество цифр, некий диапазон. В данном случае я указал минимальное значение - 3. Если после запятой поставить, например 5, то {3,5} укажет что цифр должно быть минимум 3 и максимум 5. Т.е. от трёх до пяти. В данном случае я после запятой ничего не указывал и в моём примере правило звучит как от трёх и до бесконечности... Ну и (.m) означает, что в конце искомой комбинации должна стоять буковка «m».
Вот и всё, что мне требовалось для решения проблемы. А теперь заветный Ctrl+F в NotePad++.
Главное в NotePad++ не забыть выставить нужную галочку, чтобы поиск происходил по регулярным выражениям.
Готовы? Поехали!
Небольшое, меньше 3-х минут, видео, которое демонстрирует использование регулярных выражений в NotePad++ на практике. Видео специально снимал с расстановкой, так сказать, чтобы были понятны действия. В реальности всё это заняло бы меньше 30 секунд.
Заключение
Данная статья не является каким-либо пособием по изучению регулярных выражений. Для тех, кто знаком с этим понятием - она будет бесполезна. А вот для большинства читателей - просто шанс попробовать этот инструмент, копируя практически готовые шаблоны без необходимости глубоко вникать в суть происходящего.
На приведённой маленькой задаче вы убедились какие возможности дают нам регулярные выражения при работе в NotePad++. Если данная тема кого-то заинтересовала, то вы можете воспользоваться поиском и получить самую исчерпывающую информацию о регулярных выражениях и их применении.
Я же просто покажу ещё парочку востребованных регулярок:
[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?[\ .A-Za-z0-9]{2,} - найдёт все email.
(?:8|\+7)?.?\(?(\d{3})\)?.?(\d{3})[ -]?(\d{2})[ -]?(\d{2}) - найдёт номера мобильных телефонов.
Поиск дат показывал в самом начале статьи, а ниже неудавшийся шедевр, который по моему замыслу должен бы искать текст между тегами, что он почему-то не делает, зато ищет все двойные буквы и цифры... Вот он:
(?<h1>\w)\k<h1> - не стал разбираться, оставил как есть - эффект уж больно интересный. Поиграйтесь... А с поиском текста между тегами разберусь, как возникнет необходимость...
Надеюсь, что материал будет для вас полезным и вы сможете, используя регулярные выражения в NotePad++, сделать свою работу более комфортной.
Удачи!