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

Многие вебмастеры используют программу notepad++, которая является мощным текстовым редактором с поддержкой регулярных выражений. Однако многие русскоязычные пользователи сталкиваются с тем, что (на момент написания этой статьи) в сети абсолютно отсутствует информация о работе регулярных выражений в notepad++. Например, самая информативная статья представляет собой копипасту с буржуйского сайта, просто с русским заголовком. В статье я постараюсь осветить основные принципы составления регулярных выражений (regexp).
Регулярные выражения — это формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов. По сути это строка-образец (шаблон), которая состоит из символов и метасимволов и задающая правило поиска.
Регулярные выражения в notepad++ не отличаются от оных в современных языках программирования, например C#, php, Perl, Java и т.д., поэтому если вы раньше имели дело с регулярными выражениями – вас не должен смущать тот факт, что вы используете их в другой среде.
Для примера рассмотрим способ быстро очистить html документ от внешних ссылок (точнее, пустить их через редирект). Для этого откройте страницу в notepad++ и нажмите Ctrl+F, перейдите на вкладку «заменить» и выберите внизу «регулярные выражения». В поле «Найти» скопируйте строку
href=.(http://[^'"]*).

В поле «Заменить на» скопируйте следующее:
href="/redirect.php?to=1"




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

Рассмотрим синтаксис регулярных выражений, чтобы понять, что именно происходит в этой примере. Наша задача – выдернуть URL’ы всех ссылок для преобразования. Мы знаем, что URL находится в атрибуте href тега a и заключен в кавычки (одинарные, либо двойные). В примере строка href= представляет сама себя, то есть парсер будет искать именно эти символы, это не мета-символы. За знаком равенства идёт точка, которая является метасимволом и в регекспах может означать любой символ, так мы учитываем тот факт, что кавычки могут быть двойные или одинарные – регулярка всё равно будет работать как нужно. Круглые скобки означают группу символов, то что будет найдено по шаблону который описан внутри скобок мы можем использовать в шаблоне замены (1 – это и есть эта извлечённая по шаблону подстрока; групп может быть сколько угодно и их нумерация начинается с единицы). В скобках находятся символы http://, они опять же представляют сами себя. В квадратных скобках находится набор символов, которые нужно искать, однако в нашем случае нам нужно искать до первой кавычки, и мы можем не перечислять все символы кроме кавычек, а использовать знак исключения ^. [^'"] – означает, что нам подходит любой символ, кроме ' и ". Звёздочка за скобками означает, что предыдущий набор может повторяться сколько угодно раз (то есть, он включит в себя все символы, до первой кавычки). Точка за круглыми скобками означает любой символ, это будет кавычка. Обратите внимание, точка находится ЗА скобками и кавычка не войдёт в группу символов 1.
В итоге, после нажатия кнопки «Заменить все» все ссылки вида
<a href="http://www.test.ru/some_page.php">Внешняя ссылка</a>


Превратятся в ссылки:
<a href="/redirect.php?to=http://www.test.ru/some_page.php">Внешняя ссылка</a>


Вот так регулярные выражения помогут вам очистить документ от внешних ссылок, а очистить дом от пыли вам поможет швабра h2o mop x5 fellow

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

. – Точка представляет один любой символ
[abc] – перечень символов. Совпадёт с буквами a, b, или с
[^abc] – перечень символов, которые не входят в диапазон. Совпадёт с любым символом, кроме a, b, или с
* - «Повторитель». Означает, что предшествующий символ может повторяться (0 или более раз)
[abc]* - найдёт идущие подряд символы из набора. Например, abracadabra
[^abc]* - с точностью до наоборот. abracadabrrra
.* - Абсолютно любой набор символов. ".*" – найдёт все подстроки между кавычками
^ - начало строки (если исп. В начале выражения)
$ - конец строки
w – буква, цифра или подчёркивание _
d – Любая цифра
D – Любой символ, но не цифра
[0-9] – Любая цифра
[a-z] – Любая буква от a до z (весь латинский набор символов) в нижнем регистре
[A-Z] – Любая буква от a до z в ВЕРХНЕМ регистре
[a-zA-Z] – Любая буква от a до z в любом регистре
[a-Z] - То же самое
Теги:
Регулярные выражения, notepad++
Добавлено: 14 Августа 2013 07:30:27 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...