+7-978-086-71-46
заказать звонок
Заказать обратный звонок

Введите ваше имя и любой контакт
(телефон, скайп или e-mail)

Я свяжусь с Вами в течении 10 минут
и отвечу на все Ваши вопросы.

Введите ваше имя *

Введите контактный логин скайп *

Спасибо за оставленную заявку
Ожидайте звонка

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

Опубликовано: | Обновлено: Блог вебмастера

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

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

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

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

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

2016-03-14_141721

В качестве исходных данных мне нужно удалить все выражение, вида:

{phocagallery view=category|categoryid=13|imageid=209|float=left}

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

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

2016-03-14_142454

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

2016-03-14_142545

Исходя из скриншота видно, что фразы {phocagallery view=category|categoryid=13|imageid=209|float=left} выстроились таким образом, что каждая начинается с новой строчки.

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

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

2016-03-14_142832


phocagallery view=category.categoryid=\d\d.imageid=\d\d\d.float=left
phocagallery view=category.categoryid=\d\d\d.imageid=\d\d\d\d.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 или более раз);
  •   .*   Абсолютно любой набор символов. Например, условие <p> .*</p> найдет все что между тегами <p> </p>;
  • (^.*$)   Любой текст между началом и концом строки;
  • ([0-9][0-9]*.)   ищет любые цифры, в данном случае двухзначные цифры;
  • \n  Ищет символ новой строки;
  • \r  Ищет пустые строки содержащий символы «перевод каретки» ;
  • ^$  Ищет пустые строки
  • \n\r  Ищет пустые строки содержащий символы — символ новой строки и «перевод каретки»
  • \s  Ищет класс пробельных символов. К пробельным символам относятся пробел, символ табуляции, возврат каретки, символ новой строки и символ перевода страницы. То же самое, что и [ \t,\r,\n,\f];
  • \S  Ищет класс не пробельных символов. То же самое, что и [^ \t, \r,\n,\f];
  • ^\s*$  Ищет пустые строки содержащие пробел;
  • ^[ ]*$   Ищет пустые строки содержащие пробел;
  • ^Слово   Ищет слово «Слово» в начале строки;
  •  Слово$   Ищет слово «Слово» в конце строки;
  • \bдол   Ищет набор символов «том», только в начале слов, то есть в слове Долина будет найдено, а в слове Подол нет;
  • дол\b   Ищет набор символов «дол», только в конце слов, то есть в слове Долина не будет найдено, а в слове Подол да;
  • \Bдол\B   Ищет набор символов «том», не в начале и не в конце слов, то есть в слове Долина не будет найдено, и в слове Подол нет, а вот в слове Подольск будет найдено;
  • |  — Регулярное выражение, «или».  Будет искать то что слева и справа.

Другие примеры работы:

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

Допустим, необходимо некий текст, скопированный например из ворда, заключить в теги <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.


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


Найти (^.*$) Заменить <p>\1</p> — находит новую строку и заключает её в теги <p></p>;


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


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


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

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

2016-04-20_073212

Другие статьи

Заказать обратный звонок

Введите ваше имя и любой контакт
(телефон, скайп или e-mail)

Я свяжусь с Вами в течении 10 минут
и отвечу на все Ваши вопросы.

Введите ваше имя *

Введите контактный логин скайп *

Расчет стоимости
Введите ваше имя и телефон.
Я лично перезвоню Вам для уточнения деталей,
необходимых для расчета стоимости проекта.

Введите ваше имя *

Введите контактный телефон *

Указать точное время звонка

или позвоните мне по телефону
+7-499-70-300-44
Расчет стоимости
Введите ваше имя и телефон.
Я лично перезвоню Вам для обсуждения деталей,
необходимых для расчета стоимости проекта.

Введите ваше имя *

Введите контактный телефон *

Введите адрес сайта, который нуждается в продвижении *

Указать точное время звонка

или позвоните нам по телефону
+7-499-70-300-44
Спасибо за оставленную заявку
Ожидайте звонка
Расчет стоимости
Введите ваше имя и телефон.
Я лично перезвоню Вам для уточнения деталей,
необходимых для расчета стоимости проекта.

Введите ваше имя *

Введите контактный телефон *

Указать точное время звонка

или позвоните мне по телефону
+7-499-70-300-44
Спасибо за оставленную заявку
Ожидайте звонка
Хочу так же
Введите ваше имя и телефон.
Я лично перезвоню Вам для уточнения деталей.

Введите ваше имя *

Введите контактный телефон *

Указать точное время звонка

или позвоните мне по телефону
+7-499-70-300-44
[contact-form-7 404 "Not Found"]
Спасибо за оставленную заявку
Ожидайте звонка
Заказ СЕО продвижения
Введите ваше имя и телефон.
Я лично свяжусь с Вами для обсуждения деталей.

Введите ваше имя *

Введите контактный телефон *

Введите ваш Скайп *

Спасибо за оставленную заявку
Ожидайте звонка