Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Регулярные выражения в Notepad++
ИСТОЧНИК СДУЛСЯ
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или Регистрация
Просто решил поделиться данной статьей в надежде, что она кому-то поможет, ничего сверх естественного тут нет
Однажды я столкнулся с очень не простой проблемой: имелось очень большое количество хаотичного текста(ну очень большое, около 1 млн. символов) и задача состояла в том, чтобы среди этого текста найти все десятизначные номера начинающиеся на определенные цифры, например, на 46. Да найти их не просто так, а составить список этих номеров в отдельном файле.
Конечно поиск в любом текстовом редакторе рулит, но номера то все разные, и копировать вручную, когда среди этого текста их около тысячи не очень весело, не правда ли?
Как у каждого программиста, родилась идея написать программку, но в инструментах на компьютере я был ограничен.
В моих руках был только всеми любимый Notepad++, и я в глубине своего сознания понимал, что этот редактор способен на удивительные вещи, в том числе и решить мою задачу, особенно когда в поиске я увидел галочку “Регулярные выражения”. И тут я начал усердно гуглить, и в целом нашел следующие выражения, которые можно вставить в строку поиска:
. – Точка представляет один любой символ
* – «Повторитель». Означает, что предшествующий символ может повторяться
.* – Абсолютно любой набор символов. “.*” – найдёт все подстроки между кавычками
^ – начало строки (если исп. В начале выражения)
$ – конец строки
\w – буква, цифра или подчёркивание _
\d – Любая цифра
\D – Любой символ, но не цифра
\s — Пробел
\S — Не Пробел
\n – Перенос на новую строку.
[0-9] – Любая цифра
[a-z] – Любая буква от a до z (весь латинский набор символов) в нижнем регистре
[A-Z] – Любая буква от a до z в ВЕРХНЕМ регистре
[a-zA-Z] – Любая буква от a до z в любом регистре
[a-Z] – То же самое
[abc]* – найдёт идущие подряд символы из набора. Например, abracadabra
[^abc]* – с точностью до наоборот. abracadabra
[abc] – перечень символов. Совпадёт с буквами a, b, или с
[^abc] – перечень символов, которые не входят в диапазон. Совпадёт с любым, кроме a, b, или с
(^.*$) — Любой текст между началом и концом строки
\n\r — Ищет пустые строки.
^\s*$ или ^[ ]*$ – Ищет пустые строки содержащие пробел
Это конечно помогло мне только найти сами номера:
Но как мне найти сразу все и скопировать это еще в отдельный файл? Изучая меню “Поиск” и саму форму поиска наткнулся на две гениальные вещи:
1. В форме поиска на вкладке “Пометки” можно выделить все строки закладкой(синий кружок на полях), в которых мы нашли искомые числа.
2. “Поиск” – “Управление закладками” – “Копировать все строки с закладками” – это дает возможность скопировать все помеченные закладкой строки в буфер обмена.
Эврика, осталось только перенести все найденные числа на новую строку. И в этом нам поможет опять очень простое регулярное выражение:
Давайте разберем, что же я тут сделал:
Я выполнил поиск по маске – 46[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] - необходимое число и заменил его тем же числом, но уже со вставкой новой строки спереди и сзади – \n. Чтобы выделить данные, которые будут вставляться при замене используются скобки, а непосредственно для вставки этих данных/<порядковый номер скобок>(в данном случае \1, так как у нас весь результат помещен в единственные скобки).
Объясню по-другому, если у нас есть выражение, например, (234)546(321), то \1 = 234, а \2 = 321. И так далее, в зависимости от количества скобок.
Осталось самое простое, помечаем закладками все результаты:
Кстати, скобки уже в этом поиске не так уж важны.
Далее копируем все закладки через меню “Поиск“:
И вставляем(Ctrl-V) результат куда вам будет угодно.
Удивительно просто, не так ли?)
Вот так я справился со своей задачей и не нужно изобретать велосипеды. Вам остается лишь додумать необходимое выражение и наслаждаться простотой поиска данных.
Последнее редактирование: