Сравнение с нулем или более вхождений

Теперь пробный файл Parts . txt содержит список номеров деталей, состоящих из трех букв, за которыми следует ноль или больше цифр. В этом простом файле мак¬симальное количество цифр равно трем, но т.к. квантификатор * соответствует (в ча¬стности) трем вхождениям, он будет соответствовать приведенным в файле номерам.При наличии веской причины наличия не более трех цифр это можно записать с по¬мощью альтернативного синтаксиса, который будет описан ниже в данном приложе¬нии. Каждый из номеров деталей в данном примере состоит из последовательности прописных букв ABC, за которыми следуют ноль или более цифр:
АВС
АВС123
АВС12
АВС889
АВС8899
АВС 34
Нужное правило можно выразить следующим образом.
Проверить наличие прописной буквы А. При обнаружении проверить наличие прописной буквы В. При обнаружении проверить наличие прописной буквы С. При обнаружении всех трех прописных букв проверить наличие нуля или более цифр.
Поскольку все номера деталей начинаются с букв АВС, то для поиска номеров дета¬лей, которые соответствуют описанию задачи, мы будем применять шаблон
АВС[0-9]*
1. Откройте OpenOffice.org Writer, и откройте в нем файл Parts. txt.
2. Нажмите комбинацию клавиш , чтобы открыть диалоговое окно Найти и заменить.
3. Установите флажки Регулярное выражение и Учитывать регистр.
4. Введите в текстовом поле Найти шаблон АВС [ 0-9] *.
5. Щелкните на кнопке Найти все и просмотрите выделенные соответствия.
Соответствия, обнаруженные в OpenOffice.org Writer, показаны на рис. А.17. Как и ожидалось, все номера деталей соответствуют шаблону.
Прежде чем проработать пару примеров, кратко рассмотрим фрагмент регулярно¬го выражения [0-9] *. Звездочка применяется к классу символов [0-9], которая назы¬вается здесь фрагментом.
Почему выполняется успешное сравнение с буквами ABC номеров деталей? Когда механизм обработки регулярных выражений находится в позиции перед буквой А сочетания ABC, он проверяет совпадение следующего символа и прописной буквы А. Т.к. первый символ сочетания ABC является буквой А, то соответствие обнаружено. Затем проверяется наличие буквы В. Она также присутствует, и проверяется наличие буквы С. В этот момент уже обнаружено соответствие шаблону первых трех символов. И, наконец, выполняется сравнение с образцом [0-9] *, который означает "Наличие нуля или более цифровых символов". Поскольку символ после буквы С является сим¬волом конца строки, то цифр нет. Поскольку после буквы С из последовательности ABC обнаружено точно ноль цифр, обнаружено соответствие (ноль цифр). Т.к. обна¬ружено соответствие всем компонентам шаблона, то обнаружено соответствие всему шаблону.
А почему соответствует шаблону номер детали АВС8899? Когда механизм обработ¬ки регулярных выражений находится в позиции перед буквой А последовательности АВС8899, он сравнивает следующий символ номера с прописной буквой А. Т.к. первый символ номера детали АВС8899 является буквой А, то обнаружено соответствие. Затем проверяется наличие букв В и С. Они также обнаружены. На данный момент обнару¬жены первые три символа регулярного выражения. Теперь выполняется сравнение с образцом [0-9] *, который означает "Наличие нуля или более цифровых символов". За буквой С следуют четыре цифры. Они соответствуют шаблону (т.е. критерию "ноль или более цифр"). Т.к. обнаружено соответствие всем компонентам шаблона, то обна¬ружено соответствие и всему шаблону.

Выполните пошаговое сравнение с шаблоном других номеров деталей, и вы увиди¬те, что каждый из них соответствует шаблону ABC [ 0-9] *.
Квантификатор +
Имеется множество ситуаций, когда нужно, чтобы указанный символ или группа символов присутствовала хотя бы один раз, но в то же время могла присутствовать и более одного раза. Для этой цели предназначена операция количества +. Эта операция означает "Соответствие одному или более вхождениям предшествующего фрагмента".
Взгляните на файл Parts. txt — на те строки, в которых имеется хотя бы одна цифра. Теперь нам нужно найти номера деталей, которые начинаются с прописных букв ABC, за которыми следуют одна или более цифр.
Эту задачу можно сформулировать так, как описано ниже.
Проверить наличие прописной буквы А. При обнаружении проверить наличие прописной буквы В. При обнаружении проверить наличие прописной буквы С. При обнаружении всех трех прописных букв проверить наличие одной или более цифр.
Данное определение задачи записывается следующим шаблоном:
ABC [0-9] +