Notepad поиск расширенный


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

Регулярные выражения в 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) результат куда вам будет угодно.

Удивительно просто, не так ли?)

Вот так я справился со своей задачей и не нужно изобретать велосипеды. Вам остается лишь додумать необходимое выражение и наслаждаться простотой поиска данных.

 

mmo-develop.ru

Регулярные выражения в notepad++ | Компьютерная помощь

Хотя эта статья гордо и названа Регулярные выражения в notepad++, это скорее шпаргалка, для самого себя, а также может быть кому-то ещё, пригодится. Смысл её таков, что иногда мне бывает что-то поменять, добавить или удалить в тексте. Как и всякий ленивый человек, я пытаюсь этот процесс облегчить, ускорить, короче оптимизировать и автоматизировать.

Другими совами, я где-то когда-то узнал про регулярные выражения, попробовал, у меня получилось и мне понравилось. Теперь сталкиваясь с необходимостью указанной в первом абзаце, я начинаю вспоминать, а как я это сделал? Естественно благополучно не вспомнив, начинаю «лопатить» интернет в поисках ответа на свои «хотелки».

Это небольшое отступление к тому, что если вы знаете регулярные выражения и умеете ими пользоваться, это статья не для вас, но спасибо, что заглянули, возможно, в комментарии укажите более простой способ если только. Итак, не претендуя на сколь ни будь значимость, и важность приступим, помолясь.

Рисунок 1

Прошу прощения за несколько сумбурность сей статьи, она будет набираться, обновляться и дополняться, как мне на душу легло, а не как вам, кажется, должно быть.

√  . — Точка представляет один любой символ

√  ^ — Начало строки

√  $ — Конец строки

√  \s — Пробел

√  \S — Не Пробел

√  \w — буква, цифра или подчёркивание _

√  \d — Любая цифра

√  \D — Любой символ, но не цифра

√  [0-9] — Любая цифра

√  [a-z] — Любая буква от a до z (весь латинский набор символов) в нижнем регистре

√  [A-Z] — Любая буква от a до z в ВЕРХНЕМ регистре

√  [a-zA-Z] — Любая буква от a до z в любом регистре

√  [a-Z] — То же самое

√  * — «Повторитель». Означает, что предшествующий символ может повторяться (0 или более раз)

√  .* — Абсолютно любой набор символов. Например, условие <p> .*</p> — найдет все что между тегами <p> </p>

√  (^.*$) — Любой текст между началом и концом строки

√  ([0-9][0-9]*.) — ищет любые двухзначные в данном случае цифры

√  \n\r — Ищет пустые строки. Вроде как если оставить пустым окно "Заменить" то удаляет пустые строки, но можно поставить вот это \0

√  ^\s*$ — Ищет пустые строки содержащие пробел.

√  ^[ ]*$ — Ищет пустые строки содержащие пробел.

Примеры:

Добавление знаков в начале и конце строки, абзаца

Допустим, необходимо некий текст, скопированный например из ворда, заключить в теги <p></p>

Ставим в "найти" - (^.*$) ищет соответственно начало и конец строки.

Ставим в "заменить на" - \1 и то, что нужно вставить в начало и конец строки, у нас в примере это <p></p>

Выражение будет иметь следующий вид:<p>\1</p>. Как показано на рисунке 1. В дальнейшем нет нужды в рисунках, так они будут идентичны этому, с той лишь разницей, что выражения, там будут другие.

*** Прим. Добавление круглых скобок () в поле найти, обязательно, иначе будет убирать текст.

 

Добавление знаков в начале или в конце строки, абзаца

Допустим, необходимо некий текст, скопированный например из ворда, заключить в одиночный тег </br> это тег перевода строки, не всегда удобно и нужно оборачивать его в теги <p></p>. Ну я так считаю, возможно и неправильно, но допустим это стих, песня или анекдот, где все строчки короткие и каждая строка новая, мне нравится тут одиночный тег больше.

Для этого в поле "найти" вводим символ $ Конец строки, а в поле "заменить на" вводим нужный нам тег или что то другое, в данном случае тег </br> не забывая добавить \1, то есть выглядит это так - </br>\1 . В данном случае мы только добавляем нужный нам тег, поэтому в круглые скобки в общем то, не нужны, но если поставить, также будет заменять корректно.

Аналогично можно добавлять что-нибудь и в начале строки, заменив в поле найти на символ ^ начала строки, наверное ...

Как то возникла у меня необходимость удалить пустые строки в документах, и не только просто пустые но и содержащие пробелы. Всё бы ничего если бы это был один-два файла, есть в Notepad++ в операциях со строками такие функции как «Удалить пустые строки» и «Удалить пустые строки (Содер. символы Пробел)».

Но вот беда, мне нужно было это сделать где-то примерно в 25-28 файлах, и в принципе, это тоже нетрудно. Но, мы, же знаем регулярные выражения, подумал я и решил, процесс облегчить. Итак, суть в том, что в блокноте в «Поиске и Замена» есть кнопочка, «Заменить во всех Открытых документах», вот не неё и была вся моя надежда.

Поискав в интернете, долго ли коротко ли, отовсюду понемножку нашел информацию как это сделать, попробовал – получилось.

Поэтому пишу здесь, чтобы самому не забыть, и быть может другим подсказать.

Пункт 1. Удаления пустых строк

В поле "найти" вводим \n\r - ищет пустые строки, вроде как если оставить пустым окно "Заменить" то удаляет пустые строки, но можно поставить вот это \0. Ну а далее всё просто открываем все файлы, которые нам нужно «почистить», вводим символы и жмём «Заменить во всех Открытых документах».

Результат: Во всех открытых документах, пустые строки, не содержащих пробелов удалены.

Пункт 2. Удаления пустых строк, содержащих символы Пробел

Тут работа происходит в два этапа, сначала удаляем символы Пробел, а потом пустые строки как это сделать указано в пункте 1.

Поэтому если есть и просто пустые строки и строки, содержащие символы Пробел, то рекомендую начать сразу с этого пункта, работы просто меньше, в смысле, сначала очищаем пустые строки от пробелов, а затем удаляем все строки, ведь теперь, хоть их и стало больше но они все «чистые».

В поле "найти" вводим ^[ ]*$ или ^\s*$ - ищет пустые строки содержащие пробел (не знаю, может у кого-то с одним не получится набором, попробуйте с другим), аналогично вроде как, если оставить пустым окно "Заменить" то удаляет пробелы, но можно поставить вот это \0. Ну а далее всё просто открываем все файлы, которые нам нужно «почистить», вводим символы и жмём «Заменить во всех Открытых документах».

Результат: Во всех открытых документах, пустые строки очищены от пробелов.

Для удаления этих строк выполняем действия указанные в пункте 1.

P.S. Кстати, пока набирал, текст увидел что есть вкладка «найти в файлах», возможно можно было и обойтись без лишнего открывания – закрывания всех файлов. Это заметка себе на будущее попробовать, а вам возможно подсказка.

 

www.fadmin.ru

Регулярные выражения в notepad++ - Romapad.ru

Друзья! Тут просто подборка разных полезных регулярок для обработки текста и html-кода в notepad++

 

^[^"]+.([^"]+).* заменить на: $1

 

^[^"]+.([^"]+).*

заменить на:

$1

 

^([^/]*/){5}[^/]*$ разъяснение: ^ начало строки ( начало группы [^/]* любой символ кроме слеша, 0 или более раз / слеш ){5} закончить и повторить группу 5 раз [^/]* любой символ кроме слеша, 0 или более раз $ конец строки

 

^([^/]*/){5}[^/]*$

разъяснение:

^     начало строки

(     начало группы

[^/]* любой символ кроме слеша, 0 или более раз

/     слеш

){5} закончить и повторить группу 5 раз

[^/]* любой символ кроме слеша, 0 или более раз

$     конец строки

 

<td>([^<]*)</td> - то есть задаем искомую строку, внутри которой может быть произвольный текст. Текст оформляем как ([^<]*) - любые символы, кроме символа открытия (или закрытия) тега.

 

<td>([^<]*)</td> - то есть задаем искомую строку,

внутри которой может быть произвольный текст. Текст оформляем как ([^<]*) - любые символы,

кроме символа открытия (или закрытия) тега.

 

В данном примере выражение \d+ означает любую цифры от 0 до 9 любое количество раз

Аналогично можно использовать следующие наборы выражений:

. — Один произвольный символ ^ — Начало строки $ — Конец строки \s — Пробел \S — Не Пробел \w — Буква, цифра или символ подчёркивания _ \d — Любая цифра \D — Любой символ кроме цифр [0-9] — Любая цифра [a-z] — Любая буква от a до z (весь латинский набор символов) в нижнем регистре [A-Z] — Любая буква от a до z в ВЕРХНЕМ регистре [a-zA-Z] — Любая буква от a до z в произвольном регистре [a-Z] — Любая буква от a до z в произвольном регистре * — Повторение. Означает, что предшествующий символ может повторяться (0 или более раз) .* — Любой набор символов. Например, условие <p> .*</p> — найдет все что между тегами <p> </p> (^.*$) — Любой текст между началом и концом строки ([0-9][0-9]*.) — Любое двухзначное число \n\r — Пустая строка ^\s*$ — Пустая строка с пробелом ^[ ]*$ — Ищет пустые строки содержащие пробел.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

 

. — Один произвольный символ

^ — Начало строки

$ — Конец строки

\s — Пробел

\S — Не Пробел

\w — Буква, цифра или символ подчёркивания _

\d — Любая цифра

\D — Любой символ кроме цифр

[0-9] — Любая цифра

[a-z] — Любая буква от a до z (весь латинский набор символов) в нижнем регистре

[A-Z] — Любая буква от a до z в ВЕРХНЕМ регистре

[a-zA-Z] — Любая буква от a до z в произвольном регистре

[a-Z] — Любая буква от a до z в произвольном регистре

* — Повторение. Означает, что предшествующий символ может повторяться (0 или более раз)

.* — Любой набор символов. Например, условие <p> .*</p> — найдет все что между тегами <p> </p>

(^.*$) — Любой текст между началом и концом строки

([0-9][0-9]*.) — Любое двухзначное число

\n\r — Пустая строка

^\s*$ — Пустая строка с пробелом

^[ ]*$ — Ищет пустые строки содержащие пробел.

 

 

Список будет регулярно пополняться

Поделитесь полезной информацией с друзьями или подпишитесь на рассылку новых статей:

рассылка на почту всех новых статей сайта romapad.ru не чаще одного раза в неделю ->

Помогла статья или комментарий автора? Отблагодарите автора:

Про Роман Моренец

С 2009 года веб-дизайн - моя основная сфера деятельности. Создаю проекты разного уровня сложности, оказываю поддержку, разрабатываю индивидуальные решения, помогаю новичкам.

romapad.ru

Поиск и замена с помощью регулярных выражений в notepad++

Хотя эта статья гордо и названа «Поиск и замена с помощью регулярных выражений в notepad++», это скорее небольшая шпаргалка. Смысл её в том, что иногда мне бывает нужно что-то поменять, добавить или удалить в тексте. Как и всякий ленивый человек, я пытаюсь этот процесс облегчить, ускорить, короче оптимизировать и автоматизировать. Другими совами, я где-то, когда-то, что-то узнал про регулярные выражения, попробовал, у меня получилось, мне понравилось. Но так уж сложилось, я быстро забываю, что и как делал.

Это небольшое отступление к тому, что если вы знаете регулярные выражения и умеете ими пользоваться, это статья не для вас, но спасибо, что заглянули.

Хотя наверное следует сделать небольшое отступление, для тех кто вообще не в курсе, но хотел бы научиться.

Регулярное выражение – это шаблон текста, который состоит из обычных символов (например, букв от а до я) и специальных символов, известных как метасимволы. Шаблон задает правила поиска и может осуществлять различные манипуляции с текстом.

Далее приведены метасимволы и их значение, а затем уже примеры применения.

№СимволОписание
1.Точка представляет один любой символ
2^Начало строки
3$Конец строки
4^$Пустая строка (начало и конец, между которыми пусто)
5.+Любая не пустая строка
6\sПробел
7\SНе Пробел
8\wБуква, цифра или подчеркивание
9\dЛюбая цифра
10\DЛюбой символ, но не цифра
11[0-9]Любая цифра
12[a-z]Любая буква от a до z (весь латинский набор символов) в нижнем регистре
13[A-Z]Любая буква от a до z в ВЕРХНЕМ регистре
14[a-zA-Z]Любая буква от a до z в любом регистре
15[a-Z]То же самое
16*«Повторитель». Означает, что предшествующий символ может повторяться (0 или более раз)
17.*Абсолютно любой набор символов. Например, условие <p>.*</p> найдет любой текст между тегами <p> </p>
18(^.*$)Любой текст между началом и концом строки
19([0-9][0-9]*.) Ищет любые цифры, в данном случае двухзначные цифры
20\nИщет символ новой строки
21\rИщет пустые строки содержащий символы «перевод каретки»
22^$Ищет пустые строки
23\n\r Ищет пустые строки содержащий символы – символ новой строки и «перевод каретки»
24\sИщет класс пробельных символов. К пробельным символам относятся пробел, символ табуляции, возврат каретки, символ новой строки и символ перевода страницы. То же самое, что и [ \t,\r,\n,\f]
25\SИщет класс не пробельных символов. То же самое, что и [^ \t, \r,\n,\f]
261^\s*$Ищет пустые строки содержащие пробел
272^[ ]*$Ищет пустые строки содержащие пробел
28^ТестИщет слово «Тест» в начале строки
29Тест$Ищет слово «Тест» в конце строки
30\bтомИщет набор символов «том», только в начале слов, то есть в слове «Томск»будет найдено, а в слове Потом нет
31том\b Ищет набор символов «том», только в конце слов, то есть в слове «Томск» не будет найдено, а в слове «Потом» будет
32\Bтом\B Ищет набор символов «том», не в начале и не в конце слов, то есть в слове «Томск» не будет найдено, и в слове «Потом» нет, а вот в словах Автоматизация, Хрестоматия будет найдено

1, 2 Также следует отметить, что часть примеров уже устарела, в том смысле, что notepad++ совершенствуется, что не может не радовать, и часть примеров делается стандартными командами.

Например, «Удалить пустые строки содержащие пробел» сейчас выполняется через меню «Правка» – «Операции со строками». Что лишний раз показывает их актуальность, раз они были включены в штатный набор, значит весьма многие этого хотели. Кроме того, по этому примеру можно разрабатывать свои алгоритмы поиска и замены, поэтому они оставлены.

Примеры применения регулярных выражений для поиска и замены3: 1. Найти (^.*$) Заменить \1\n\r Находит новую строку и добавляет к ней пустую строку 2. Найти $ Заменить </br>\1 Находит конец строки и добавляет к ней тег </br> 3. Найти (^.*$) Заменить <p>\1</p> Находит новую строку и заключает её в теги абзаца <p></p> 4. Найти (^.*$) Заменить <li>\1</li> Находит новую строку и заключает её в теги списка <li></li> 5. Найти ^.* в ред. Федерального закона .*$ Пример 5, это более сложный пример поиска, в данном выражении применены следующие условия поиска: - Найти в тексте начало новой строки(абзаца) ^ в которой может быть любой текст .* как до начала фразы в ред. Федерального закона, так и после .* неё до конца $ строки(абзаца)

3 Графическое изображение примера

рисунок 1

Пример 5 может сначала показаться лишенным смысла, так как эти же самые условия можно получить просто введя в поиск в ред. Федерального закона, однако возможно вам необходимо, например:

- чтобы поиск не учитывал фразу в ред. Федерального закона, если именно с неё начинается строка, и таких строк великое множество;

- вы собираетесь до и после искомой фразы добавить что-то такое эдакое, например начало новой строки или даже пустую строку, чтобы в дальнейшем заменить её ещё на что-либо.

В этих случаях, простой поиск уже не сработает. Хотя возможно это выражение можно сократить или как то усовершенствовать.

Небольшое, но важное отступление, если в шаблоне поиска («Найти») встречаются символы схожие с метасимволами, то их нужно экранировать квадратными скобками. Например, в искомом тексте нужно найти именно вот такое сочетание 123*456, то есть в нём есть символ *, тогда в поле «Найти» должно быть 123[*]456. В противном случае, будет искаться сочетание вида 1233456, так как * означает повторитель.

При этом если вы читаете внимательно, то увидите что в примере 5, точка после слова в ред не экранирована, так как в данном частном случае в тексте просто не может быть других вариантов, поэтому это не принципиально будет искаться именно точка или любой другой символ. Если предположить, что в тексте могут быть фразы вроде - в редА Федерального закона и такие фразы нужно не учитывать при поиске, то тогда, точку следовало бы указать явно ^.* в ред[.] Федерального закона .*$.

| – Регулярное выражение, назовем его «альтернатива» -ищет все заданные слова в тексте, предложении. Например нужно найти определенные имена в тесте - Маша и Оля, вечером собирались в кино, но встретив Сашу и Пашу, Маша ушла с Пашей на концерт, а Оля с Сашей решили погулять в парке. Выражение (Маша|Оля) соответственно найдет всех Маш и Оль ;) то есть четыре совпадения.

Как очистить историю «поиска» в Notepad++

Давно пользуюсь «поиском и заменой», и столько же меня раздражала одна маленькая особенность, с которой я мирился, потому что обратная сторона медали, очень удобна.

А именно, то, что редактор ведет историю «поиска и замены», и при следующем поиске – автоматически предлагает ей (историей) воспользоваться , что, безусловно, очень удобно в рамках правки одного документа. Все заготовки как говорится «под рукой», не нужно ничего вводить заново.

рисунок 2

Однако не всегда это как говорится плюс, порой после долгой и плодотворной работы, этот список весьма обширен, но уже совершенно не нужен и лишь отвлекает. Раньше я старался не обращать внимания, на эти мелкие неудобства, так как полезность этой функции очевидна. Недавно встретил короткое упоминание, о том, как очистить список истории «поиска и замены», не скажу что этот способ очень быстрый и удобный, но, тем не менее, может быть, кому пригодится.

Итак, начнем:

  1. Закрываем notepad++;
  2. Открываем файл config.xml (%User%\Application Data\Notepad++\config.xml) или как-то так ... ;
  3. Важно: Открывать нужно в любом другом редакторе, но не notepad++, можно в системном блокноте.

  4. Удаляем всё что между тегами <FindHistory></FindHistory> – Рисунок 3.

    Ну или не всё удаляем, нужное можно оставить, там в принципе всё понятно и никаких дополнительных объяснений не требует, – «абра-кадабра» это кириллица первой строки истории, то есть смотрим на рисунок 2 и сравниваем, это одно и тоже. С той лишь разницей, что на рисунке 2 нет окошка заменить. В тегах <Find name="..." /> история того, что искать, а в тегах <Replace name="..." /> история того, на что заменять;

  5. Открываем notepad++ без истории в буфере обмена.
рисунок 3

www.royal-agency.ru


Смотрите также