Главная Новости

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

Опубликовано: 02.09.2018

видео Регулярные выражения в Notepad++

Регулярные выражения Notepad ++ Замена ссылок и изображений (href src)

Регулярные выражения в 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++, сделать свою работу более комфортной.

Удачи!

 

rss