1. Откройте OpenOffice.org Writer, и откройте в нем файл Parts. txt.
2. Нажмите комбинацию клавиш , чтобы открыть диалоговое окно Найти и заменить.
3. Установите флажки Регулярное выражение и Учитывать регистр.
4. Введите в текстовом поле Найти шаблон АВС [0-9] {0,2}, щелкните на кнопке Найти все и просмотрите выделенные соответствия, как показано на рис. А. 19.
Обратите внимание, что в некоторых строках обнаружено соответствие только для частей номеров. Если вы удивлены, почему это так, прочтите еще раз формули¬ровку задачи. Нужно обнаружить указанную последовательность символов. Не весь номер детали, а просто последовательность символов.
Как работает этот шаблон при сравнении с номером детали ABC? Когда механизм обра¬ботки регулярных выражений находится в позиции перед буквой А в номере детали ABC, он выполняет сравнение с прописной буквой А. Она обнаружена. Затем выполняется срав¬нение с буквой В. Успешно. После этого выполняется сравнение с буквой С. Также успеш¬но. На данный момент обнаружены первые три символа регулярного выражения. Теперь выполняется сравнение с образцом [ 0 - 9 ] {0,2}, который означает "Соответствует мини¬мум нулю и максимум двум цифрам". За буквой С строки ABC следует ноль цифр. Поэтому обнаружено соответствие (ноль цифр удовлетворяет критерию "минимум ноль цифр", заданному первым параметром квантификатора {0,2}). Поскольку обнаружено соответ¬ствие последнему компоненту шаблона, то и все строка соответствует шаблону.
Что происходит при сравнении строки с номером детали АВС8899? Почему об¬наружено соответствие лишь первых пяти символов этого номера? Когда механизм обработки регулярных выражений находится в позиции перед буквой А последова¬тельности АВС8899, он выполняет сравнение следующего символа в номере детали с прописной буквой А и обнаруживает соответствие. Затем выполняется сравнение с буквой В — успешно. Затем осуществляется сравнение с буквой С — также успешно. Теперь обнаружены первые три символа регулярного выражения. И, наконец, выпол¬няется сравнение с образцом [0-9] {0,2}, который означает "Соответствует минимум нулю и максимум двум цифрам". За буквой С следуют четыре цифры. Однако для со¬ответствия шаблону достаточно лишь двух цифр. Поскольку после буквы С последова¬тельности ABC следуют четыре цифры, обнаружено соответствие (двух цифр, которые удовлетворяют критерию "не более двух цифр"), но последние две цифры этого номе¬ра не нужны для сравнения, поэтому они не выделены. Поскольку обнаружено соот¬ветствие последнему компоненту шаблона, то и вся строка соответствует шаблону.
Синтаксис {n,m}
Параметр, задающий минимальное количество вхождений в фигурных скобках, не обязан быть нулевым. Он может быть любым числом, не большим максимального количества. Пусть, например, нужно обнаружить от одного до трех вхождений цифр подряд. Эта задача может быть сформулирована следующим образом.
Проверить наличие^прописной буквы А. При ее обнаружении проверить на наличие пропис¬ной буквы В. При ее обнаружении проверить на наличие прописной буквы С. Если обнаруже¬ны, все три буквы, проверить наличие минимум одной и максимум трех цифр.
Если нужно найти вхождения от одной до трех цифр в файле Parts. txt, то можно использовать следующий шаблон:
ABC [0-9] {1,3}
На рис. А.20 показаны соответствия, обнаруженные в OpenOffice.org Writer. Обратите внимание, что номер детали ABC не соответствует шаблону, т.к. в нем содер¬жится ноль цифр, а шаблону соответствуют лишь номера, в которых от одной до трех цифр. Обратите также внимание, что в номере детали АВС8899 шаблону соответству¬ют лишь первые три из четырех цифр.
Объяснение, приведенное в предыдущем разделе для синтаксиса {0,т} вполне объясняет и то, как выполняется данный пример.
Иногда нужно выполнить поиск неограниченного количества вхождений. Это можно указать, пропустив параметр максимального количества вхождений в фигур¬ных скобках.
Чтобы указать неограниченное количество вхождений, но не меньшее двух, можно сформулировать следующую задачу.
Проверить наличие прописной буквы А. При ее обнаружении проверить на наличие прописной буквы В. При ее обнаружении проверить на наличие прописной'буквы С. Если обнаружены все три буквы, проверить наличие минимум двух и максимум неограниченного количества цифр.
Это можно выразить с помощью следующего шаблона:
АВС[0-9] {2, }
На рис. А.21 показаны вхождения, обнаруженные в OpenOffice.org Writer. Обратите внимание, что сейчас в строке АВС8899 выделены все четыре цифры, т.к. максималь¬ное количество цифр, входящих в номер детали, не ограничено.
Поиск от нуля до двух вхождений
Tagged: