главная \ веб-дизайн \ регулярные выражения в едитплюс |
предыдущая | регулярные выражения | следующая |
Регулярные выражения в EditPlusРегулярные выражения(regular expressions) есть во многих языках программирования.Регулярное выражение представляет собой образец - шаблон - который сопоставляется со строкой. Вот что написано в справке самого ЕдитПлюс: Регулярное выражение - это строка поиска, которая содержит обычный текст плюс специальные симоволы, которые означают дополнительные условия поиска. Регулярное выражение позволяет более сложный поиск и замену. Например, вы можете найти любую цифру использую регулярное выражение "[0-9]". Таким же образом вы можете найти любой НЕ цифровой символ использую регулярное выражение "[^0-9]". EditPlus поддерживает следующие регулярные выражения в строках "Найти", "Заменить" и в "Найти в файлах" командах.
Описания выражения Выражение в скобочках беруться в скобочки - (). К взятим в скобки выражениям можно обратиться, используя \0, \1, \2, \3, и т.д. \0 показывает выражение в скобочках, отображающее целую подстроку, которая подошла. \1 указывает на первое выражение в скобочках, \2 - на второе, и т.д. Смотрите следующие примеры.
Original Search Replace Result abc (ab)(c) \0-\1-\2 abc-ab-c abc a(b)(c) \0-\1-\2 abc-b-c abc (a)b(c) \0-\1-\2 abc-a-c
Иногда использование регулярного выражение может значительно ускорить какую-нибудь рутинную операцию с текстом. Вот только чтобы подобрать нужное выражение иногда требуется достаточно долгое время. Подбирание выражение напоминает разгадывание шарады, и проверить подойдет выражение или нет часто можно только на практике. Хочу привести 2 небольших примера использования регулярных выражений. Пример1 Ко мне иногда приходят длинные письма, на которые я отвечаю, вставляя в это письмо свои комментарии - ответы. Проблема в том, что нажал на кнопочку "Ответить на письмо" текст почему-то сильно растягивается по ширине, и перестает помещаться на экране, возникает горизонтальная полоса прокрутки... Единственный выход - вручную подгонять текст, чтобы он помещался на экране. Если письмо ОЧЕНЬ большое, то надо минут 15 только заниматься этой утомительной работой. А человек существо ленивое... и как говорила птичка страусу, "лучше 3 дня учиться летать, а потом за день долететь, чем 3 дня бежать".
Выход: использование регулярных выражений.
Решения прошли следующие стадии:
2) тоже вроде бы неплохо Не буду вспоминать почему плохо подходят первые два шаблона, скажу почему подходит последний - потому что подошел. :) Регулярное выражение должно обладать некими зачатками интеллекта, быть гибким... Вначале следует определенное колличество любых символов в начале строки, потом НЕ ДОЛЖНО БЫТЬ символов пробела, запятой или точки. Таких симвлов должно быть 0 или более раз. А далее как раз должен следовать один из этих же символов(1 или более символов).
Все это заменяется на: (Кстати если надо текст обычный сделать так, чтобы впереди каждой строчки был например словосочетание k> надо использовать регулярное выражение ^([^K][^>]) на K> \0) Пример 2 Непосредственно связан с написанием этой статьи, пример так меня увлек, что я минут 15 непосреднественно искал решение проблемы. Давно быстрее было бы сделать все вручную, но тут дело было принципиальное.
Когда я писал "описание выражения" чуть выше в этой статье, html-код вначале выглядел так: С помощью css я хотел сделать выделение самого специального символа желтым цветом. Для этого надо было назвачить тэгу span какой-нибудь стиль, например .haha. Проблема в том, чтобы сделать это НЕ в ручную, так, чтобы html-код приобрел следующий вид:
<span class=haha>\t</span> Tab character.<br> Для решения этой задачи подошло следующее регулярное выражение:
Регулярное выражение: Иногда кажется, что подошло бы более простое регулярное выражение, но что-то не срабатывает, приходиться думать почему и изменять выражение на более навороченное.
Пока все. |
предыдущая | веб-дизайн | следующая |