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

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

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

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


Рисунок 1

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

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

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

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

S — Не Пробел

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

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

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

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

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

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

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

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

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

.* — Абсолютно любой набор символов. Например, условие

— найдет все что между тегами

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

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

nr — Ищет пустые строки. Вроде как если оставить пустым окно «Заменить» то удаляет пустые строки, но можно поставить вот это

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

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

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

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

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

Ставим в «заменить на» — 1 и то, что нужно вставить в начало и конец строки, у нас в примере это

Выражение будет иметь следующий вид:

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

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

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

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

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

Для этого в поле «найти» вводим символ $ Конец строки, а в поле «заменить на» вводим нужный нам тег или что то другое, в данном случае тег не забывая добавить 1, то есть выглядит это так — 1 . В данном случае мы только добавляем нужный нам тег, поэтому в круглые скобки в общем то, не нужны, но если поставить, также будет заменять корректно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Notepad

Одной из особенностей великих старых редакторов программирования (с легендарными названиями Unix, такими как Vi и Emacs) была их способность использовать регулярные выражения (он же regex) в операциях поиска и замены. Одна из замечательных особенностей редактора Notepad++ заключается в том, что он соответствует сильным сторонам регулярных выражений этих старых ветеранов, не скрывая их в лесу загадочных команд.

Предположим, что ваш HTML-код включает width=120px. Вы хотите, чтобы он был обновлен до XHTML-совместимого атрибута width=’120px’. (В HTML кавычки нужны редко.вXHTML они обязательны.) Простой поиск/замена сделает свое дело, но у вас также есть width=60px и много других ширин. Вам нужно регулярное выражение.

Это самый распространенный случай регулярного выражения. Вам нужно найти некоторый текст, часть которого является фиксированной, а часть-переменной. Вам нужно изменить фиксированную часть, но сохранить переменную часть. Итак, вот крошечное резюме регулярных выражений (есть целые книги, написанные на эту тему!), чтобы вы начали.

Регулярное выражение PatternMatchers

  • a буква «a» соответствует самой себе—большинство символов соответствуют только самим себе
  • . точка соответствует любому символу вообще
  • s (два символа, читаемые как «escapes») соответствует любому пробелу (пробел, табуляция, возврат или новая строка)
  • d (любая цифра, от 0 до 9)
  • w (w означает «слово») любой алфавит (верхний или нижний регистр), цифра (от 0 до 9) или подчеркивание

Знаки препинания иногда имеют особое значение. Независимо от того, являются ли они особенными или нет, если вам нужна сама метка, предшествуйте ей обратной косой чертой. (Если вы не уверены, что часто бывает, «убегайте» от знака препинания — заранее проверяйте его обратной косой чертой.)

  • . точка
  • + знак плюс

Одиночные строчные буквы, идентифицирующие специальные классы символов, могут быть перевернуты по значению с помощью заглавной буквы:

  • s любой пробельный символ
  • S любой символ, не являющийся пробелом
  • d любая десятичная цифра
  • D любой символ, КРОМЕ десятичной цифры

Множители

Некоторые символы регулярных выражений обеспечивают коэффициент повторения, называемый «множителем». Наиболее распространенными являются:

  • + (один или несколько) d+ — это «одна или несколько цифр», шаблон, который соответствует каждому положительному десятичному целому числу
  • *(ноль или больше).* — это «ноль или больше любого символа»
  • ? (ноль или единица) предыдущий символ является необязательным

Альтернативы и группировка

Оператор | означает «или». Скобки группируют вещи. (a|b) означает «a» или «b».

Классы

Заключение списка символов в скобки означает: «совпадите точно с одним из этих символов.» Пример: [iou]. Это сокращение для (i|o|u).

Паттерн d[iou]g соответствует «dig» или «dog» или «dug». Он не соответствует «drag» или «dragon».

Вы можете использовать дефисы для обозначения диапазонов символов. [A-Z] соответствует любой заглавной букве.

Каретка («^») в первой позиции класса символов отрицает класс. Это означает «соответствовать любому символу, КРОМЕ одного из них. d[^iou]gсоответствует любой строке d.g(«D», а затем любой символ, затем «G»), кроме как «копать», «собака» или «копал». [^A-Z] соответствует любому символу, КРОМЕ заглавной буквы.

Обратные ссылки

Если регулярное выражение содержит круглые скобки, символы, соответствующие этим скобкам, могут быть использованы позже. Это называется «обратным обращением». Символы внутри группы, начинающиеся с первого » ( » , называются либо «$1» (в Perl и языках, которые близко копируют Perl), либо «RegExp.$1» в JavaScript или «1» в строке Замены в редакторе, таком как Notepad++.

Использование регулярных выражений с обратными ссылками

Давайте вернемся к нашей проблеме: мы хотим найти все вхождения «width=», за которыми следует спецификация ширины. Мы хотим заменить его той же спецификацией, но значение ширины должно быть заключено в одинарные кавычки. Чтобы все было просто, предположим, что все ваши спецификации ширины находятся в одной строке и не включают встроенные кавычки.

Самая простая часть-это сопоставление «width=». Регулярное выражение для этого-простоwidth=. Если вы не уверены, имеет ли знак равенства специальное значение регулярного выражения (это не так), более безопасная версия-width=.

Но что дальше? У вас будет несколько цифр и букв «px». Это будет d+px (при условии, что вся ваша ширина будет в пикселях). Пришло время создать тестовый файл и опробовать его.

Тестовые Данные

Тест первый: смыть влево

Тест второй: не влево, другие атрибуты

Тест третий: другой размер ширины

Крепления пикселей

Эта спецификация будет указывать ширину, разделенную пикселями:

Попробуйте сами. Вы должны правильно преобразовать первые два тестовых случая в ширину кавычек. (Да, это трудный способ исправить две незначительные проблемы.Но представьте себе, что вы применяете это к большому HTML-файлу с огромной шириной.)

Фиксирование всей ширины

Что произойдет, если ширина будут выражены в пикселях, некоторые-в эм, процентах или точках (и да, есть и другие возможности). Мы могли бы попытаться составить исчерпывающий список: (px|pt|%|…). Но это трудный путь.

Спецификация ширины должна завершаться закрытием тега > или пробелом, предшествующим другому атрибуту. width=([^s>]+) должен работать. Это «width=», за которым следует один или несколько символов, КРОМЕ тех, которые указаны в классе. Класс задает любой символ пробела или символ «>».

Регулярные выражения является одновременно мощными и загадочными. Здесь у нас есть только простой пример, и вы уже видите оба. Итак, давайте исправим все три тестовых случая сразу:

Тест первый: смыть влево

Тест второй: не слева, другие атрибуты

Тест третий: другой размер ширины

Повторение

Наш шаблон поиска — ширина…. Это находит строку «width» (за которой следует «…», которая является частью этого объяснения, а не частью регулярного выражения — это означает, что мы доберемся туда дальше). Далее следовал ускользающий знак препинания: width=…. Это просто означает «ширина», за которой следует «знак равенства без особого значения.»

Затем мы использовали круглые скобки для группировки подвыражения: width=(…). Это делает подвыражение доступным в строке Замены как 1. (Если бы у нас было больше групп, вторая была бы 2 и так далее. Мы могли бы даже вложить их, если бы захотели. Если вы не уверены, что входит в какую группу, посчитайте открытые круглые скобки.)

Теперь давайте заглянем внутрь этого подвыражения: (…). Мы использовали класс символов, за которым следовал знак плюс: ([…]+). Класс символов соответствует одному символу, одному из символов в классе. Знак плюс-это множитель, который говорит: «Используйте один или несколько из предыдущих.»

Теперь мы погрузимся в этот класс символов, показанный выше как […]. Он начинается с каретки [ ^ … ], что означает «используйте любые символы, КРОМЕ тех, которые указаны в этом классе.» Он продолжается с экранированной «s», s, которая является любым символом пробела, а затем с»>», который сам по себе является знаком «больше, чем». Таким образом, отрицаемый класс будет соответствовать любому символу, КРОМЕ пробела или «>».

Заключение

Много работы? Да. Но если делать так, как на примерах выше вы увидите, что это намного меньше работы, чем, если делать все эти изменения по одному.

Теперь представьте себе этот поиск/замену на основе регулярных выражений, используемый в сочетании с функцией Поиска в файлах. Вы тестируете на фрагменте, затем на небольшом файле. Это работает. Вы делаете резервную копию своих файлов, затем нажимаете кнопку «Найти в файлах», ставите галочку «Во всех подпапках» и бинго!, вы преобразовали весь сайт.


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

Наверняка любой, даже самый непродвинутый пользователь ПК, умеет осуществлять поиск и замену строк к тексте. В общем случае необходимо указать строку, которую нужно заменить, и строку, на которую будет производится замена. Этого достаточно для достижения самых простых целей.

Но иногда хочется большего — не просто заменить, а, например, изменить структуру строк.

Более сложная цель

Рассмотрим задачу, с которой я столкнулся в процессе своей работы. Мне кажется этот пример в достаточной мере раскрывает суть текущей темы.

Итак, в процессе разработки сайта, у меня появилась необходимость удалить из таблицы большое количество записей. Структура таблицы следующая:

2016-03-14_141721

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

1. Перенос исходного кода на новую строку

2016-03-14_142454

После выполнения функции, получаем код вида:

2016-03-14_142545

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

2. Удаляем их.

Удалять пришлось в несколько этапов с помощью кода и его модификаций:

2016-03-14_142832

phocagallery view=category.categoryid=dd.imageid=ddd.float=left
phocagallery view=category.categoryid=ddd.imageid=dddd.float=left

В конце осталось удалить только скобки <> обычной заменой, которые с помощью регулярного выражения удалить нельзя.

Возможности Notepad ++

  • . «Точка» представляет один любой символ;
  • ^ Начало строки;
  • $ Конец строки;
  • ^$ пустая строка (начало и конец, между которыми пусто);
  • .+ любая не пустая строка;
  • s Пробел;
  • S Не Пробел
  • w буква, цифра или подчёркивание _;
  • d Любая цифра;
  • D Любой символ, но не цифра;
  • [0-9] Любая цифра;
  • [a-z] Любая буква от a до z (весь латинский набор символов) в нижнем регистре;
  • [A-Z] Любая буква от A до Z в ВЕРХНЕМ регистре;
  • [a-zA-Z] или [a-Z] Любая буква от a до z в любом регистре;
  • * «Повторитель». Означает, что предшествующий символ может повторяться (0 или более раз);
  • .* Абсолютно любой набор символов. Например, условие

найдет все что между тегами

;

  • (^.*$) Любой текст между началом и концом строки;
  • ([0-9][0-9]*.) ищет любые цифры, в данном случае двухзначные цифры;
  • n Ищет символ новой строки;
  • r Ищет пустые строки содержащий символы «перевод каретки» ;
  • ^$ Ищет пустые строки
  • nr Ищет пустые строки содержащий символы — символ новой строки и «перевод каретки»
  • s Ищет класс пробельных символов. К пробельным символам относятся пробел, символ табуляции, возврат каретки, символ новой строки и символ перевода страницы. То же самое, что и [ t,r,n,f];
  • S Ищет класс не пробельных символов. То же самое, что и [^ t, r,n,f];
  • ^s*$ Ищет пустые строки содержащие пробел;
  • ^[ ]*$ Ищет пустые строки содержащие пробел;
  • ^ Слово Ищет слово «Слово» в начале строки;
  • Слово $ Ищет слово «Слово» в конце строки;
  • b дол Ищет набор символов «том», только в начале слов, то есть в слове Долина будет найдено, а в слове Подол нет;
  • дол b Ищет набор символов «дол», только в конце слов, то есть в слове Долина не будет найдено, а в слове Подол да;
  • B дол B Ищет набор символов «том», не в начале и не в конце слов, то есть в слове Долина не будет найдено, и в слове Подол нет, а вот в слове Подольск будет найдено;
  • | — Регулярное выражение, «или». Будет искать то что слева и справа.
  • Другие примеры работы:

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

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

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

    Ставим в “заменить на” – 1 и то, что нужно вставить в начало и конец строки, у нас в примере это

    Выражение будет иметь следующий вид:

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

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

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

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

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

    Для этого в поле “найти” вводим символ $ Конец строки, а в поле “заменить на” вводим нужный нам тег или что то другое, в данном случае тег не забывая добавить 1, то есть выглядит это так – 1 . В данном случае мы только добавляем нужный нам тег, поэтому в круглые скобки в общем то, не нужны, но если поставить, также будет заменять корректно.

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

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

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

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

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

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

    В поле “найти” вводим nr – ищет пустые строки, вроде как если оставить пустым окно “Заменить” то удаляет пустые строки, но можно поставить вот это . Ну а далее всё просто открываем все файлы, которые нам нужно «почистить», вводим символы и жмём «Заменить во всех Открытых документах».

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

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

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

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

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

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

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

    Найти (^.*$) Заменить 1nr — находит новую строку и добавляет к ней пустую строку;

    — находит новую строку и заключает её в теги

    Найти nr Заменить «оставляем пустым» — Удаляет пустые строки

    круглые скобки обязательны, иначе найденное будет изменено на заменяемое.

    Массово добавить в начало и в конец строки любой символ

    В строки найти вставляем: (^.*$)
    В строки заменить на вставляем: “1”


    Регулярные выражения в Notepad++ Замена, дубликаты, удаление, плагины

    Notepad++ стал моим первым профессиональным инструментом в веб-разработке и создании сайтов.

    И не потому что там есть множество инструментов для работы с исходным кодом, и не из-за обилия плагинов для Notepad++.
    Всё проще — в те далёкие времена уроков по веб-дизайну было не так много, а Notepad++ был приведён в статейке по которой я упражнялся. Это было что-то вроде hello-world для HTML. ?
    Ещё тогда меня удивил аскетичный интерфейс утилиты и обилие пунктов меню. И до сих пор Notepad++ это самый навороченный текстовый редактор, которым я ежедневно пользуюсь.

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

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

    Регулярные выражения могут использоваться в Notepad++ для множества логических операция: сортировка строк, удаление дубликатов, поиск и замена как отдельных символов, так и целых логических конструкций. По сути горизонт возможностей такого функционала не ограничен и зависит только от вашей фантазии по его применению.
    Я позволил себе отсортировать регулярные выражения для Notepad++ в порядке их надобности и популярности использования. ?

    n — Перенос Enter . Что особенно приятно, может использоваться не только для поиска, но и для замены. Например, благодаря этому регулярному выражению, и двум кликам, вы можете поменять построчный список на список через запятую, и наоборот.

    t — Табуляция. Означает то же, что и действие клавиши Tab . Очень полезно, если вы комбинируете работу в excel и notepad++. Знаки tab по умолчанию переносятся как колонки таблицы.

    nr — Выражение для поиска пустых строк.

    s — Пробел. В большинстве случаем вы можете искать просто введя символ пробела в поле поиска Notepad++, однако в составе сложных регулярных выражений пригодится это обозначение. Например, конструкция ^s*$ найдёт все строки с пробелом.

    ^ и $ — Символы начала и конца соответственно.

    d — Этим регулярным выражением в Notepad++ можно обозначить любую цифру. Учитывайте, что под цифрой подразумевается «единичный экземпляр», а не всё число. Например, применив эту комбинацию в тексте с числом 789, последовательно найдутся все три цифры (7, 8, 9) в этом числе.

    .(точка) и .*(точка со звёздочкой) — Любой символ и любая последовательность оных соответственно.

    D — Также найдутся любые символы, но не цифры.

    [a-z], [A-Z], [a-Z], [0-9] — На мой взгляд, всё и так понятно, но я поясню. Такие регулярные выражения в квадратных скобках означают последовательность букв или цифр, и регистр искомого выражения.

    Примеры и применение регулярных выражений в Notepad++

    Согласитесь, весь этот список на вид звучит довольно нудно и напоминает что-то среднее между высшей математикой и программированием. ? Мне стоит привести примеры использования регулярных выражений и символов Notepad++.

    Удалить пустые строки в Notepad++

    Удалить пустые строки с помощью текстового редактора Notepad++ просто — выше я уже писал регулярное выражение для этого — nr . Его необходимо ввести в окне поиска и замены. При этом поле Замены оставьте пустым. Все пустые строки удалятся из документа, их место займут данные располагающиеся ниже.

    Либо, что конечно же проще, если ваше выражение больше никаких условий не требует, воспользуйтесь пунктом в меню. Edit => Line Operations => Remove empty lines . Там же есть и пункт для удаления пустых строк с пробелом: Containing Blank Characters .

    Удалить всё после символа / перед символом в строке в Notepad++

    Регулярное выражение удаление всех данных в строке до определенного символа, или их группы я часто использую, например, при сортировке маркетинговых баз с e-mail.

    Для того чтобы в Notepad++ удалить всё в строке перед определенным символом, используйте комбинацию .+(искомая-часть). Давайте я разберу подробнее. Например, у нас есть txt файл с почтовыми адресами коллег, по одному адресу в столбик. Кроме того в этой же строке могут содержаться и ФИО человека через пробел, табирование, или через запятую.

    Выглядит это вот так:
    nastya@mail.ru Анастасия Евгеньевна Петрова
    pasha@yandex.ru Павел Иванов Юрлица
    vasya@notepad-plus-plus.ru Василий Павлович Работа

    И таких контактов с списке у нас 500. Для того чтобы отделить домены, нам понадобится 2 действия в Notepad++, удалить всё в строках до определенного символа, а затем удалить всё в строках после.

    Первая регулярное выражение для нас будет .+(@), в поле замены оставляем пустым.

    Результат
    mail.ru Анастасия Евгеньевна Петрова
    yandex.ru Павел Иванов Юрлица
    notepad-plus-plus.ru Василий Павлович Работа

    Второе регулярное выражение Notepad для удаления после символа, можно сконфигурировать по доменному суффиксу, запрос будет (.ru.+)$.

    Удалить дубликаты строк в Notepad++

    Удаление дубликатов строк в Notepad++ это вообще отдельная большая тема. Мало кто знает как сконфигурировать поисковой запрос в текстовом редакторе и удалить повторяющиеся строки исключительно через Notepad++, не прибегая к помощи плагинов и сторонних расширений.

    Но я — знаю ?. Чтобы удалить построчное дублирование в Notepad, используйте эту фразу:

    Важно, чтобы все галочки в поиске у вас были включены. И зациклить поиск, и применять регулярные выражения, тогда Notepad++ точно сработает как надо, и удалит из документа дубли строк.

    Второй способ избавится от дублирования строк

    Второй способ удалить дубликаты строк с помощью Notepad++ абсолютно не элегантен, но функционален при ежедневном использовании. Навигатор по репозиторию дополнений встроен прямо в ваш Notepad. Просто ставим плагин через меню Plugins => Plugin manager .
    Нужный нам плагин называется TextFx Characters.
    Не слишком сложно, правда? Устанавливаются плагины автоматически, нужно будет только перезагрузить утилиту. Жмёте установить и активировать.

    Функционал плагина местами дублирует многие регулярные выражения в Notepad++, а по-моему мнению собственно на них и основан.

    Настройка для удаления дубликатов строк находится в меню: Textfx => Tools => Sort Lines insensetive .

    Не забудьте выделить данные в редакторе, перед тем как нажимать.

    Notepad++: плагины и альтернативы.

    Для начала про плагины. Как вы поняли, в Notepad++ система плагинов весьма интуитивна и встроена в редактор. Но, кроме того, существует и множество других дополнений от сторонних авторов — в этом одна из прелестей freeware софта. Пожалуй, я как-нибудь выложу их обзор, если вам будет интересна тема Notepad и эта статья придётся по вкусу.

    Что касается альтернатив, Notepad++ любят за регулярные выражения, легкость, простоту и бесплатность. Такое сочетание вообще, пожалуй, единственное в этом кластере, потому лично я не вижу прямых конкурентов и альтернатив для Notepad.

    Но если посмотреть на нишу шире, можно вспомнить про AkelPad (тоже текстовый редактор), Textmate, LeafPad, Sublime Text, Atom, Brackets…Так можно дойти и до моего любимого Adobe Dreamweaver. Однако, всё это по сути уже не то. Notepad++ неповторим, аскетичен, и по своему прекрасен, и очень в духе софта былых времён. ?

    P.S. Если вам была полезна эта статья, оставьте коммент, и я буду знать что двигаюсь в правильном направлении. Или задавайте вопросы! welcome ⬇️⬇️⬇️

    Фотограф, блогер, специалист по рекламе в интернете. В прошлом веб-дизайнер/разработчик. Веду своё шоу в Тикток и VK Клипах, люблю рок, джаз, Стивена Кинга и Харуки Мураками.


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

    Регулярные выражения в Notepad++ делают работу с текстом на порядок легче и быстрее. В статье на конкретной задаче покажу пару реальных примеров, которые может взять за основу каждый. На самом деле всё легче, чем может показаться.

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

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

    Мне кажется, что для не программиста это несколько сложновато. Поэтому всё простым языком, чтобы было понятно всем. При этом, надеюсь, ясно, что статья предназначена не для специалистов.

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

    Далее всё конкретно применительно к Notepad++.

    Например, нам нужно найти все даты. Давайте попробуем просто словами определить набор условий для этой цели. Как должна выглядеть дата:

    1. Начинаться с числа — одна или две цифры.
    2. Затем либо тире, либо точка.
    3. Затем месяц — одна или две цифры.
    4. Опять либо тире, либо точка.
    5. Год — от двух до четырёх цифр.

    В обычном поиске такое сделать невозможно. А вот при помощи регулярных выражений — запросто. И выглядеть такое выражение будет вот так:

    Испугались? Не стоит. Просто можете брать и использовать. Такое регулярное выражение найдёт вот такую дату: 28.09.2016, и вот такую: 5-10-2016, и даже такую: 02-12.56.

    Как это всё делать на практике покажу ниже на своей реальной задаче. Там, кстати, использовались другие регулярные выражения.

    Для чего мне понадобились регулярные выражения в NotePad++

    Кому не терпится быстрее посмотреть практическое применение регулярных выражений в NotePad++, тот может этот раздел пропустить. Для остальных я расскажу как я докатился до жизни такой.

    Сравните эти два скрина, которые я сделал с записи видеорегистратора.

    Оригинальные субтитры Субтитры после обработки

    Слева — оригинал, справа — после моей обработки.

    Видеорегистратор создаёт файл субтитров, который и содержит данные, выводимые в видео. Но данные эти для меня избыточны. Мне не нужны координаты и высота над уровнем моря. В идеале только скорость, дата и время.

    В оригинале файл выглядел так:

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

    Конечно же вручную лопатить сотню-другую строковых блоков и убирать лишнее просто нереально.

    Но вот тут, как раз и пришли на помощь регулярные выражения.

    Применение регулярных выражений в 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.

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

    — не стал разбираться, оставил как есть — эффект уж больно интересный. Поиграйтесь. А с поиском текста между тегами разберусь, как возникнет необходимость.

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


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

    notepad

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

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

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

    Навигация по тексту

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

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

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

    S — Не Пробел

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

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

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

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

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

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

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

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

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

    .* — Абсолютно любой набор символов. Например, условие

    — найдет все что между тегами

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

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

    nr — Ищет пустые строки. Вроде как если оставить пустым окно «Заменить» то удаляет пустые строки, но можно поставить вот это

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

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

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

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

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

    Ставим в «заменить на» — 1 и то, что нужно вставить в начало и конец строки, у нас в примере это

    Выражение будет иметь следующий вид:

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

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

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

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

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

    Для этого в поле «найти» вводим символ $ Конец строки, а в поле «заменить на» вводим нужный нам тег или что то другое, в данном случае тег не забывая добавить 1, то есть выглядит это так — 1 . В данном случае мы только добавляем нужный нам тег, поэтому в круглые скобки в общем то, не нужны, но если поставить, также будет заменять корректно.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Оцените статью
    Fobosworld.ru
    Добавить комментарий

    Adblock
    detector