ЭНЦИКЛОПЕДИЯ СОВРЕМЕННОГО САЙТОСТРОЕНИЯ

Операторы регулярных выражений в Notepad++

Тема в разделе "Редакторы кода", создана пользователем Стас, 29 янв 2016.

  1. Стас

    Стас Пользователь

    Сообщения:
    18
    Рейтинг:
    23
    Хотя эта статья гордо и названа Регулярные выражения в 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   Ищет набор символов «том», не в начале и не в конце слов, то есть в слове Томск не будет найдено, и в слове Потом нет, а вот в словах Автоматизация, Хрестоматия будет найдено;
    Примеры:

    • Найти* (^.*$) Заменить \1\n\r - находит новую строку и добавляет к ней пустую строку;
    • Найти (^.*$) Заменить <p>\1</p> - находит новую строку и заключает её в теги <p></p>;
    • Найти** $ Заменить </br>\1 - находит конец строки и добавляет к ней тег </br>;
    •  |  - Регулярное выражение, назовем его «альтернатива» - ищет все заданные слова в тексте, предложении. Например нужно найти определенные имена в тесте - Маша и Оля, вечером собирались в кино, но встретив Сашу и Пашу, Маша ушла с Пашей на концерт, а Оля с Сашей решили погулять в парке. Выражение (Маша|Оля) соответственно найдет всех Маш и Оль ;) то есть четыре совпадения.
    * Прим. Добавление круглых скобок () в поле найти, обязательно, иначе будет убирать текст.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Источник: http://plans-and-decisions.ru/web/notepad/29-regular-expressions.html
     
    #1