§ 4.5 Использование регулярных выражений
§ 4.5 Использование регулярных выражений
Функции поиска и замены в FB Editor предусматривают использование регулярных выражений (Regular Expressions, RegExp).
Регулярные выражения представляют собой квазиязык, объединяющий набор шаблонов и подстановок, используемых при поиске и замене фрагментов текста. Это очень мощный инструмент, кардинально облегчающий обработку текстовых документов.
Синтаксис регулярных выражений в FB Editor заимствован из языка Perl.
В приложении к книге дано краткое описание синтаксиса регулярных выражений, использующихся в FB Editor. Однако, настоятельно рекомендую этим не ограничиваться, а прочитать хороший учебник по языку Perl. А еще есть замечательная книга Дж. Фридла: «Регулярные выражения». Хорошенько поискав, ее можно найти в Сети ;)).
Рассмотрим использование регулярных выражений на примере достаточно сложной, но часто встречающейся задачи — замены компьютерных кавычек «""» на типографские „«»“.
Основная проблема здесь в том, что открывающие и закрывающие компьютерные кавычки одинаковы. Поэтому приходится ориентироваться по символам, расположенным рядом.
Обычным способом придется вызывать команду поисказамены не менее десяти раз, рискуя что-то забыть или перепутать. Регулярные выражения позволяют произвести все замены за четыре захода.
Для начала примем за аксиому, что кавычка, расположенная в самом начале абзаца — открывающая, а в самом конце — закрывающая.
Вызываем команду EditReplace.
В поле поиска «Find what:» вводим конструкцию для поиска:
^"
В поле замены «Replace with:» вводим конструкцию замены. В этом случае она совсем простая:
«
Не забыв установить флажок «Regular expression», нажимаем кнопку«Replace All».
Аналогично, для кавычки в конце абзаца конструкции поиска и замены будут:
"$
и
»
Выражения «^» и «$» называются литералами и обозначают начало и конец строки соответственно. В конструкции замены они не нужны.
Теперь обработаем оставшиеся кавычки.
Начнем с открывающей кавычки. Перед ними обычно идет пробел. Ну, иногда еще дефис или скобка.
Конструкция для поиска будет такая:
([s(-])"
Конструкция замены:
$1«
В квадратных скобках мы перечислили символы, один из которых может идти перед искомой кавычкой. Литерал «s» обозначает пробельный символ. Символ «скобка» является зарезервированным, так как используется в самих конструкциях регулярных выражений, поэтому, чтобы искать его в тексте, мы отделили его косой чертой. Заключив все это в круглые скобки, мы образовали выражение, к которому будем обращаться из строки замены. И в конце непосредственно сама искомая кавычка.
Символ, который идет перед кавычкой, нужно оставить в неприкосновенности. Поэтому в поле замены вводится обращение к выражению в строке поиска — $1.
Теперь закрывающая кавычка. После нее могут идти: пробел, запятая, точка, закрывающая скобка, вопросительный знак, восклицательный знак, дефис, символ «многоточие».
Конструкция поиска:
(S)"([s!.)-…,?:;])
Конструкция замены:
$1»$2
Здесь используется два выражения. Первое означает, что перед закрывающей кавычкой должен идти НЕ пробел. Второе выражение содержит перечисление символов, которые могут идти после нее. Соответственно, в конструкции замены идет обращение к двум выражениям.
Напоследлк должен заострить ваше внимание, что в режиме исходника FB Editor регулярные выражения функционируют несколько по-другому. В частности, не получается использовать метасимвол «|», некорректно обрабатываются перечни, содержащие кириллицу.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Использование переменных и выражений в моделях
Использование переменных и выражений в моделях Развитие технологий постоянно предъявляет все более жесткие требования к инженеру-конструктору. На первое место в современном конструировании выходят скорость и динамичность выполнения проектов (чертежей или моделей) в
Использование контроллеров и выражений
Использование контроллеров и выражений Каждый раз, когда вы анимируете объекты сцены, программа 3ds Max сохраняет параметры анимации в контроллерах. Контроллерами называются элементы, хранящие значения анимации и управляющие интерполяций от одного значения анимации к
Курс на использование условных выражений
Курс на использование условных выражений Несмотря на простоту концепции, управляющие структуры можно отнести к наиболее мощным средствам программирования. С одной стороны, эти структуры "только" выбирают, какой из двух различных блоков программного кода следует
Использование контролируемых выражений для назначения точек останова
Использование контролируемых выражений для назначения точек останова По мере увеличения размеров программы становится все труднее следить за изменениями значений переменных различными операторами и процедурами. Иногда вы видите, что в конечном итоге значение
3.1. Синтаксис регулярных выражений
3.1. Синтаксис регулярных выражений Обычно регулярное выражение ограничено с двух сторон символами косой черты. Применяется также форма %r. В таблице 3.1 приведены примеры простых регулярных выражений:Таблица 3.1. Простые регулярные выражения Регулярное
3.2. Компиляция регулярных выражений
3.2. Компиляция регулярных выражений Для компиляции регулярных выражений предназначен метод Regexp.compile (синоним Regexp.new). Первый параметр обязателен, он может быть строкой или регулярным выражением. (Отметим, что если этот параметр является регулярным выражением с
3.13.7. Рекурсия в регулярных выражениях
3.13.7. Рекурсия в регулярных выражениях Возможность повторно обращаться к подвыражению позволяет создавать рекурсивные регулярные выражения. Например, данный код находит любое вложенное выражение с правильно расставленными скобками (спасибо Эндрю Джексону):str = "а *
3.14. Примеры регулярных выражений
3.14. Примеры регулярных выражений В этом разделе мы приведем краткий перечень регулярных выражений, которые могут оказаться полезны на практике или просто послужат учебными примерами. Для простоты примеров ни одно выражение не зависит от наличия
Использование регулярных выражений
Использование регулярных выражений Существует три этапа использования регулярного выражения. На первом регулярное выражение разбивается на составляющие его лексемы, на втором они преобразуются форму, пригодную для установки соответствия (компиляция регулярного
Виды выражений
Виды выражений Выражения языка XPath можно условно разделить на несколько основных типов:? пути выборки;? выражения фильтрации множеств;? выражения объединения множеств;? сравнения;? логические операции;? вызовы функций.Рассмотрим подробно назначение и принципы работы