Notepad регулярные выражения замена
Notepad++ стал моим первым профессиональным инструментом в веб-разработке и создании сайтов.
И не потому что там есть множество инструментов для работы с исходным кодом, и не из-за обилия плагинов для Notepad++.
Всё проще — в те далёкие времена уроков по веб-дизайну было не так много, а Notepad++ был приведён в статейке по которой я упражнялся. Это было что-то вроде hello-world для HTML. ?
Ещё тогда меня удивил аскетичный интерфейс утилиты и обилие пунктов меню. И до сих пор Notepad++ это самый навороченный текстовый редактор, которым я ежедневно пользуюсь.
В Notepad++, среди прочего, большое внимание уделяется собственному языку регулярных выражений.
Зная как обозначить запрос специальными поисковыми операторами, в Notepad++ можно реализовывать довольно серьезные задачи и работать с большими массивами данных.
Регулярные выражения Notepad++
Регулярные выражения могут использоваться в Notepad++ для множества логических операция: сортировка строк, удаление дубликатов, поиск и замена как отдельных символов, так и целых логических конструкций. По сути горизонт возможностей такого функционала не ограничен и зависит только от вашей фантазии по его применению.
Я позволил себе отсортировать регулярные выражения для Notepad++ в порядке их надобности и популярности использования. ?
\n — Перенос Enter . Что особенно приятно, может использоваться не только для поиска, но и для замены. Например, благодаря этому регулярному выражению, и двум кликам, вы можете поменять построчный список на список через запятую, и наоборот.
\t — Табуляция. Означает то же, что и действие клавиши Tab . Очень полезно, если вы комбинируете работу в excel и notepad++. Знаки tab по умолчанию переносятся как колонки таблицы.
\n\r — Выражение для поиска пустых строк.
\s — Пробел. В большинстве случаем вы можете искать просто введя символ пробела в поле поиска Notepad++, однако в составе сложных регулярных выражений пригодится это обозначение. Например, конструкция ^\s*$ найдёт все строки с пробелом.
^ и $ — Символы начала и конца соответственно.
\d — Этим регулярным выражением в Notepad++ можно обозначить любую цифру. Учитывайте, что под цифрой подразумевается «единичный экземпляр», а не всё число. Например, применив эту комбинацию в тексте с числом 789, последовательно найдутся все три цифры (7, 8, 9) в этом числе.
.(точка) и .*(точка со звёздочкой) — Любой символ и любая последовательность оных соответственно.
\D — Также найдутся любые символы, но не цифры.
[a-z], [A-Z], [a-Z], 1 — На мой взгляд, всё и так понятно, но я поясню. Такие регулярные выражения в квадратных скобках означают последовательность букв или цифр, и регистр искомого выражения.
Добавление знаков в начале или в конце строки, абзаца
Допустим, необходимо некий текст, скопированный например из ворда, заключить в одиночный тег это тег перевода строки, не всегда удобно и нужно оборачивать его в теги . Ну я так считаю, возможно и неправильно, но допустим это стих, песня или анекдот, где все строчки короткие и каждая строка новая, мне нравится тут одиночный тег больше.
Для этого в поле «найти» вводим символ $ Конец строки, а в поле «заменить на» вводим нужный нам тег или что то другое, в данном случае тег не забывая добавить \1, то есть выглядит это так — \1 . В данном случае мы только добавляем нужный нам тег, поэтому в круглые скобки в общем то, не нужны, но если поставить, также будет заменять корректно.
Аналогично можно добавлять что-нибудь и в начале строки, заменив в поле найти на символ ^ начала строки, наверное …
Как то возникла у меня необходимость удалить пустые строки в документах, и не только просто пустые но и содержащие пробелы. Всё бы ничего если бы это был один-два файла, есть в Notepad++ в операциях со строками такие функции как «Удалить пустые строки» и «Удалить пустые строки (Содер. символы Пробел)».
Но вот беда, мне нужно было это сделать где-то примерно в 25-28 файлах, и в принципе, это тоже нетрудно. Но, мы, же знаем регулярные выражения, подумал я и решил, процесс облегчить. Итак, суть в том, что в блокноте в «Поиске и Замена» есть кнопочка, «Заменить во всех Открытых документах», вот не неё и была вся моя надежда.
Поискав в интернете, долго ли коротко ли, отовсюду понемножку нашел информацию как это сделать, попробовал – получилось.
Поэтому пишу здесь, чтобы самому не забыть, и быть может другим подсказать.
Значения отдельных регулярных выражений
Теперь познакомимся с наиболее часто употребляемыми в программе Notepad++ регулярными выражениями:
- . – любой единичный символ;
- 4 – любой символ в виде цифры;
- \D – любой символ, кроме цифры;
- [A-Z] – любая заглавная буква латинского алфавита;
- [a-z] – любая строчная буква латинского алфавита;
- [a- Z]- любая из букв латинского алфавита в независимости от регистра;
- \w – буква, подчеркивание или цифра;
- \s – пробел;
- ^ — начало строчки;
- $ — окончание строчки;
- * — повторение символа (от 0 до бесконечности);
- \4 \1 \2 \3 – порядковый номер группы;
- ^\s*$ — поиск пустых строк;
- (32*.) – поиск двузначных чисел.
На самом деле существует довольно большое количество символов регулярных выражений, и охватить их в одной статье невозможно. Значительно больше их различных вариации, которые программисты и веб-дизайнеры применяют при работе с программой Notepad++.
Основные регулярки
. — Точка представляет один любой символ
^ — Начало строки
$ — Конец строки
\S — Не Пробел
\w — буква, цифра или подчёркивание _
\d — Любая цифра
\D — Любой символ, но не цифра
5 — Любая цифра
[a-z] — Любая буква от a до z (весь латинский набор символов) в нижнем регистре
[A-Z] — Любая буква от a до z в ВЕРХНЕМ регистре
[a-zA-Z] — Любая буква от a до z в любом регистре
[a-Z] — То же самое
* — «Повторитель». Означает, что предшествующий символ может повторяться (0 или более раз)
.* — Абсолютно любой набор символов. Например, условие
.*
— найдет все что между тегами(^.*$) — Любой текст между началом и концом строки
(28*.) — ищет любые двухзначные в данном случае цифры
\n\r — Ищет пустые строки. Вроде как если оставить пустым окно «Заменить» то удаляет пустые строки, но можно поставить вот это \0
^\s*$ — Ищет пустые строки содержащие пробел.
^[ ]*$ — Ищет пустые строки содержащие пробел.
Удалить всё после символа / перед символом в строке в Notepad++
Регулярное выражение удаление всех данных в строке до определенного символа, или их группы я часто использую, например, при сортировке маркетинговых баз с e-mail.
Для того чтобы в Notepad++ удалить всё в строке перед определенным символом, используйте комбинацию .+(искомая-часть). Давайте я разберу подробнее. Например, у нас есть txt файл с почтовыми адресами коллег, по одному адресу в столбик. Кроме того в этой же строке могут содержаться и ФИО человека через пробел, табирование, или через запятую.
И таких контактов с списке у нас 500. Для того чтобы отделить домены, нам понадобится 2 действия в Notepad++, удалить всё в строках до определенного символа, а затем удалить всё в строках после.
Первая регулярное выражение для нас будет .+(@), в поле замены оставляем пустым.
Удаление пустых строк, содержащих символы пробел
Тут работа происходит в два этапа, сначала удаляем символы Пробел, а потом пустые строки как это сделать указано в пункте 1.
Поэтому если есть и просто пустые строки и строки, содержащие символы Пробел, то рекомендую начать сразу с этого пункта, работы просто меньше, в смысле, сначала очищаем пустые строки от пробелов, а затем удаляем все строки, ведь теперь, хоть их и стало больше но они все «чистые».
В поле «найти» вводим ^[ ]*$ или ^\s*$ — ищет пустые строки содержащие пробел (не знаю, может у кого-то с одним не получится набором, попробуйте с другим), аналогично вроде как, если оставить пустым окно «Заменить» то удаляет пробелы, но можно поставить вот это \0. Ну а далее всё просто открываем все файлы, которые нам нужно «почистить», вводим символы и жмём «Заменить во всех Открытых документах».
Результат: Во всех открытых документах, пустые строки очищены от пробелов.
Наверняка любой, даже самый непродвинутый пользователь ПК, умеет осуществлять поиск и замену строк к тексте. В общем случае необходимо указать строку, которую нужно заменить, и строку, на которую будет производится замена. Этого достаточно для достижения самых простых целей. Но иногда хочется большего — не просто заменить, а, например, изменить структуру строк.
Более сложная цель
Рассмотрим задачу, с которой я столкнулся в процессе своей работы. Мне кажется этот пример в достаточной мере раскрывает суть текущей темы.
Итак, в процессе разработки программного обеспечения, у меня появилась необходимость добавить в таблицу базы данных большое количество записей. Структура таблицы следующая:
В качестве исходных данных мне предоставили текстовый файл вида:
FirstBackordered = 38,
SecondBackordered = 39,
ThirdBackordered = 40,
FirstCreditCardDeclined = 41,
SecondCreditCardDeclined = 42,
ThirdCreditCardDeclined = 43,
FirstPayPalDeclined = 44,
SecondPayPalDeclined = 45,
ThirdPayPalDeclined = 46,
FirstDeclinedCreditCardBackordered = 47,
SecondDeclinedCreditCardBackordered = 48,
ThirdDeclinedCreditCardBackordered = 49,
FirstDeclinedPayPalBackordered = 50,
SecondDeclinedPayPalBackordered = 51,
ThirdDeclinedPayPalBackordered = 52
Похоже на выдержку из перечисления (enum), правда? Добавить несколько записей в такую таблицу не составит труда. А если таких записей 1000+? Согласитесь, вручную добавлять каждую совсем нет желания. К тому же обновлять таблицу нужно было и локально, и на тестовом сервере заказчика (а в будущем и на живом сервере тоже). Поэтому целесообразно написать SQL-скрипт. Причём можно заставить текстовый редактор написать его за меня!
Итак, задача заключается в том, чтобы каждую строку исходного текста преобразовать в SQL-запрос, который бы выполнял INSERT записи в нужную таблицу. Например:
необходимо преобразовать в:
Выполнить это можно в любом текстовом редакторе, который поддерживает поиск и замену по регулярному выражению, такие как Notepad++, Visual Studio, SQL Management Studio и др. Учтите, что формат регулярного выражения может отличаться в различных программах. В этой статье рассматривается поиск и замена текста в программных продуктах Microsoft.
Решение
Итак, напишем регулярное выражение для поиска строк в исходном текстовом файле:
^ — Начало строки. Совпадает с вхождением, только если оно находится в начале строки текста, в котором производится поиск;
:w — Любая строка букв. Совпадает с выражением ([a-zA-Z]+);
:Zs — Совпадает с пробелом;
:Sm — Математический символ. Совпадает с +, =, ~, |, < и >;
:d — Десятичная цифра. Совпадает с выражением (7);
$ — Конец строки. Совпадает с вхождением, только если оно находится в конце строки текста, в котором производится поиск.
В режиме Найти и заменить фигурные скобки (<>) употребляются для выражений с тегами. По такому регулярному выражению будет найдена каждая строка в исходном текстовом файле. Тегами мы сделали название (например, FirstBackordered) и номер (38). Заключенные в фигурные скобки выражения в дальнейшем можно использовать в поле «Заменить на» — \1, \2, \3 и т.д. Напишем выражение, на которое хотим заменить найденные строки:
insert into [LPEmail].[dbo].[EMAIL_TYPE]\nvalues (\n\t\2, '\1', 'D:\\Websites\\LeisurePro\\XslFiles\\LP_BO\\\1.xslt', 'D:\\Websites\\LeisurePro\\XslFiles\\LP_BO\\\1.xslt', 0, 1\n);
Как видите, используются теги \1 и \2, причём неоднократно. Эти теги заменяются на реальные подстроки, найденные в строке по регулярному выражению.
Заключение
В итоге, нажав кнопку «Заменить все» мы экономим массу времени и повышаем чувство собственного величия :D
Спасибо за внимание. Надеюсь помогу кому-нибудь избежать скучной конвеерной работы.
Пример 1: Поиск
Рассмотрим, как применяются регулярные выражения для поиска определенных элементов.
-
Чтобы начать работу с регулярными выражениями, переходим в раздел «Поиск» и в появившемся списке выбираем пункт «Найти».
Notepad++: плагины и альтернативы.
Для начала про плагины. Как вы поняли, в Notepad++ система плагинов весьма интуитивна и встроена в редактор. Но, кроме того, существует и множество других дополнений от сторонних авторов — в этом одна из прелестей freeware софта. Пожалуй, я как-нибудь выложу их обзор, если вам будет интересна тема Notepad и эта статья придётся по вкусу.
Что касается альтернатив, Notepad++ любят за регулярные выражения, легкость, простоту и бесплатность. Такое сочетание вообще, пожалуй, единственное в этом кластере, потому лично я не вижу прямых конкурентов и альтернатив для Notepad.
Но если посмотреть на нишу шире, можно вспомнить про AkelPad (тоже текстовый редактор), Textmate, LeafPad, Sublime Text, Atom, Brackets…Так можно дойти и до моего любимого Adobe Dreamweaver. Однако, всё это по сути уже не то. Notepad++ неповторим, аскетичен, и по своему прекрасен, и очень в духе софта былых времён. ?
P.S. Если вам была полезна эта статья, оставьте коммент, и я буду знать что двигаюсь в правильном направлении. Или задавайте вопросы! welcome ⬇️⬇️⬇️
Сайт обходится мне в копеечку, и как видите - здесь нет рекламы.
Понравилась статья?
Переведите хотя бы 10 руб:-)
P.S. Если нажать на номер карты - он скопируется!
Фотограф, блогер, специалист по рекламе в интернете. В прошлом веб-дизайнер/разработчик. Веду своё шоу в VK Клипах, люблю рок, джаз, Стивена Кинга и Харуки Мураками.
Как применять регулярные выражения в Notepad++, подробно показано вот здесь.
. | Точка. Обозначает любой символ |
\ | Экранирующий символ. Символы которые экранируются: ^, [, ., $, |
^ | Крышка. Начало строки |
$ | Конец строки |
\d | Любая цифра |
\D | Не цифра |
\s | Пробел, табуляция, перенос строки |
\S | Не пробел |
\w | Любая буква латиницы, цифра, или знак подчёркивания |
\W | Не латиница, не цифра, не подчёркивание |
| | Или. Соединяет несколько вариантов |
\b | Граница слова. Применяется когда нужно выделить, что искомые символы являются словом, а не частью другого слова |
\B | Не граница слова |
\ | Начало слова |
\> | Конец слова |
\A | Начало текста |
\Z | Конец текста |
* | Повторитель. Означает что предшествующий символ может работать 0 и более раз |
+ | Количество предшествующего не менее 1-го. |
? | Ограничитель. Не более одного раза |
[ ] | В квадратных скобках задаются символы к поиску, например [a-яА-Я], или 1 |
[^ ] | Исключает из поиска символы указанные в квадратных скобках |
() | В круглые скобки заключаются все комбинации с "или" и поиск начала и конца строк |
В фигурных скобках указывается точное количество вхождений, например если надо две цифры, то \d, если две или четыре, то \d, если четыре и более, то | |
\n | Новая строка |
Шаблоны регулярных выражений
Заключить каждую строку в теги html, кавычки, скобки
Найти:
(^.*$)
Заменить на:
\1
Можно вместо тега или кавычки, или скобки. Если не сработает, то попробуйте добавить перед ними символ экранированияУбрать все теги html, вместе с содержимым, оставить только текст между открывающим и закрывающим тегом
Найти даты написанные в формате дд месяц гггг г., остальное убрать
Найти дату со слешем, например: 20/5/2020, остальное убрать
Найти даты в формате дд.мм.гггг и дд-мм-гггг, остальное убрать
Найти всё между кавычек
Найти всё между скобок
Найти все адреса электронной почты, а остальное всё убрать
Удалить всё, оставив только ссылки
Найти почтовый индекс, а остальное убрать
Поменять местами ФИО и дату рождения. Например "Кузнецов Андрей Николаевич 26.10.1983", на "26.10.1983 Кузнецов Андрей Николаевич"
Перенести буквы в начало, в выражениях формата 6465C, 498558JR, 1286458975KTD и т.д.
Удалить атрибут с разными URL
Заменить один html тег на другой, открывающую и закрывающую части
Удалить всё в строке после определённого символа или слова, вместе с ним
Удалить всё после символа использующегося и в регулярных выражениях, например *
Сделать перенос строки перед каждой заглавной буквой
Удалить из ссылки всё, кроме домена
Убрать всю табуляцию
Удалить все комментарии из html кода
Удалить все комментарии из CSS кода
Удалить все комментарии вида // из PHP кода.
Привести к одному размеру все находящиеся в открытых файлах картинки
Найти:
Заменить на:
Удалить в строке всё после пробела
Удалить во всех строках всё до определённого символа, например до ?
Удалить все строки в которых определённое число символов, например меньше 100
Удалить все запятые, после которых идёт буква или пробел, но не цифра
Найти и, если надо, удалить время в формате ММ:СС. Актуально для стенограмм и расшифровок видео
Взять в круглые скобки время в формате ММ:СС, находящееся в любой части текста
Добавить в каждую пустую строку
Отредактировать расшифровку видео
1. Убираем раскадровку по времени
2. Объединяем предложения, с разделением пустой строкой
Найти все фрагменты кода расположенные между двумя словами
Программирование – довольно сложный, кропотливый, и, зачастую, монотонный процесс, в котором не редко приходится повторять одни и те же или похожие действия. Чтобы максимально автоматизировать и ускорить поиск и замену похожих элементов в документе, в программировании была изобретена система регулярных выражений. Она в значительной мере позволяет сэкономить время и силы программистов, веб-мастеров, а иногда и представителей других профессий. Давайте выясним, как регулярные выражения применяются в продвинутом текстовом редакторе Notepad++.
Удалить пустые строки в Notepad++
Удалить пустые строки с помощью текстового редактора Notepad++ просто — выше я уже писал регулярное выражение для этого — \n\r . Его необходимо ввести в окне поиска и замены. При этом поле Замены оставьте пустым. Все пустые строки удалятся из документа, их место займут данные располагающиеся ниже.
Либо, что конечно же проще, если ваше выражение больше никаких условий не требует, воспользуйтесь пунктом в меню. Edit => Line Operations => Remove empty lines . Там же есть и пункт для удаления пустых строк с пробелом: Containing Blank Characters .
Удаление пустых строк
В поле «найти» вводим \n\r — ищет пустые строки, вроде как если оставить пустым окно «Заменить» то удаляет пустые строки, но можно поставить вот это \0. Ну а далее всё просто открываем все файлы, которые нам нужно «почистить», вводим символы и жмём «Заменить во всех Открытых документах».
Результат: Во всех открытых документах, пустые строки, не содержащих пробелов удалены.
Понятие регулярных выражений
Прежде чем приступить к изучению применения регулярных выражений в программе Notepad++ на практике, давайте подробнее узнаем суть данного термина.
Регулярные выражения – это особенный язык поиска, применяя который можно производить различные действия над строками документа. Делается это при помощи специальных метасимволов, при вводе которых производится поиск и выполнение манипуляций по принципу шаблонов. К примеру, в Notepad++ точка в виде регулярного выражения представляет любой знак из всего множества существующих символов, а выражение [A-Z] – любую заглавную букву латинского алфавита.
В различных языках программирования синтаксис регулярных выражений может отличаться. В текстовом редакторе Notepad++ используются те же значения регулярных выражений, что и в популярном языке программирования Perl.
Пример 2: Замена символов
В программе Notepad++ можно не только производить поиск символов, но и выполнять их замену с помощью регулярных выражений.
-
Для запуска данного действия переходим во вкладку «Заменить» окна поиска.
А теперь давайте применим поиск с заменой при помощи регулярных выражений для операций не связанных с компьютерным программированием или версткой веб-страниц.
-
Имеем список лиц в формате ФИО с датами рождения.
Мы показали самые простые действия, которые можно выполнить, используя регулярные выражения в программе Notepad++. Но с помощью данных выражений профессиональные программисты осуществляют и довольно сложные операции.
Мы рады, что смогли помочь Вам в решении проблемы.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
Еще статьи по данной теме:
Оооо, вы просто не представляете как вы мне помогли) когда пользовался нотепадом, т не замечал этой галовчки в поиске. И видимо зря. В моей рабцоте эта функция пригодится для применения. Можно очень быстро очистить строки от лишних и пустых пробелов. Пока еще не полностью разобрался со всеми возможностяими этой функции, поэтому пока добавлю статьюв заклдки, потом почитаю)
Как в нотепаде одинаковые выражения,находящиеся в разных строках кода,одновременно переместить на строку вверх?Например:
1) X123
2) G0Y123
3) X0
4) X324
5) G0Y324
6) X0
то есть,все X0 сразу переместить на строку выше выражения G0.
Спасибо.
С уважением Равиль.
Notepad++ Как можно в документе найти все строки например с ‘456’ в кавычках все числа разные, и они трёхзначные и заменить одновременно на другой символ, например $, чтобы получилось вместо ‘456’ зачок $ ?
Хотя эта статья гордо и названа Регулярные выражения в notepad++, это скорее шпаргалка, для самого себя, а также может быть кому-то ещё, пригодится. Смысл её таков, что иногда мне бывает что-то поменять, добавить или удалить в тексте. Как и всякий ленивый человек, я пытаюсь этот процесс облегчить, ускорить, короче оптимизировать и автоматизировать.
Другими совами, я где-то когда-то узнал про регулярные выражения, попробовал, у меня получилось и мне понравилось. Теперь сталкиваясь с необходимостью указанной в первом абзаце, я начинаю вспоминать, а как я это сделал? Естественно благополучно не вспомнив, начинаю «лопатить» интернет в поисках ответа на свои «хотелки».
Навигация по тексту
Удалить дубликаты строк в Notepad++
Удаление дубликатов строк в Notepad++ это вообще отдельная большая тема. Мало кто знает как сконфигурировать поисковой запрос в текстовом редакторе и удалить повторяющиеся строки исключительно через Notepad++, не прибегая к помощи плагинов и сторонних расширений.
Но я — знаю ?. Чтобы удалить построчное дублирование в Notepad, используйте эту фразу:
Важно, чтобы все галочки в поиске у вас были включены. И зациклить поиск, и применять регулярные выражения, тогда Notepad++ точно сработает как надо, и удалит из документа дубли строк.
Добавление знаков в начале и конце строки, абзаца
Допустим, необходимо некий текст, скопированный например из ворда, заключить в теги
Ставим в «найти» — (^.*$) ищет соответственно начало и конец строки.
Ставим в «заменить на» — \1 и то, что нужно вставить в начало и конец строки, у нас в примере это
Выражение будет иметь следующий вид:
\1
. Как показано на рисунке 1. В дальнейшем нет нужды в рисунках, так они будут идентичны этому, с той лишь разницей, что выражения, там будут другие.*** Прим. Добавление круглых скобок () в поле найти, обязательно, иначе будет убирать текст.
Второй способ избавится от дублирования строк
Второй способ удалить дубликаты строк с помощью Notepad++ абсолютно не элегантен, но функционален при ежедневном использовании. Навигатор по репозиторию дополнений встроен прямо в ваш Notepad. Просто ставим плагин через меню Plugins => Plugin manager .
Нужный нам плагин называется TextFx Characters.
Не слишком сложно, правда? Устанавливаются плагины автоматически, нужно будет только перезагрузить утилиту. Жмёте установить и активировать.
Функционал плагина местами дублирует многие регулярные выражения в Notepad++, а по-моему мнению собственно на них и основан.
Настройка для удаления дубликатов строк находится в меню: Textfx => Tools => Sort Lines insensetive .
Не забудьте выделить данные в редакторе, перед тем как нажимать.
Практическое использование регулярных выражений
Теперь давайте на конкретных примерах разберемся, как применяются регулярные выражения в программе Notepad++.
Примеры и применение регулярных выражений в Notepad++
Согласитесь, весь этот список на вид звучит довольно нудно и напоминает что-то среднее между высшей математикой и программированием. ? Мне стоит привести примеры использования регулярных выражений и символов Notepad++.
Читайте также: