Чтение онлайн

на главную - закладки

Жанры

Интернет-журнал "Домашняя лаборатория", 2007 №9
Шрифт:

\P{name} • Отрицание. Большая буква всегда задает отрицание множества, заданного малой буквой

\w • Множество символов, используемых при задании идентификаторов — большие и малые символы латиницы, цифры и знак подчеркивания

\s • Соответствует символам белого пробела

\d • Соответствует любому символу из множества цифр

Категория: Операции (модификаторы)

*

Итерация. Задает ноль или более соответствий; например, \w* или

(abc)*. • Аналогично, {0,}

+ • Положительная итерация. Задает одно или более соответствий; например, \w+ или (abc)+. Аналогично, {1,}

? • Задает ноль или одно соответствие; например, \w? или (abc)?. Аналогично, {0,1}

{n} • Задает в точности n соответствий; например, \w{2}

{n,}• Задает, по меньшей мере, n соответствий; например, (abc) {2, }

{n,m} • Задает, по меньшей мере, n, но не более m соответствий; например, (abc) {2,5}

Категория: Группирование

(?<Name>) • При обнаружении соответствия выражению, заданному в круглых скобках, создается именованная группа, которой дается имя Name. Например, (?<tei> \d{7}). При обнаружении последовательности из семи цифр будет создана группа с именем tel

• Круглые скобки разбивают регулярное выражение на группы. Для каждого подвыражения, заключенного в круглые скобки, создается группа, автоматически получающая номер. Номера следуют в обратном порядке, поэтому полному регулярному выражению соответствует группа с номером 0

(?imnsx) • Включает или выключает в группе любую из пяти возможных опций. Для выключения опции перед ней ставится знак минус. Например, (?i-s:) включает опцию i, задающую нечувствительность к регистру, и выключает опцию s — статус single-line

Знакомство с классами пространства RegularExpressions

В данном пространстве расположено семейство из одного перечисления и восьми связанных между собой классов.

Класс Regex

Это основной класс, всегда создаваемый при работе с регулярными выражениями. Объекты этого класса определяют регулярные выражения. Конструктор класса, как обычно, перегружен.

В простейшем варианте ему передается в качестве параметра строка, задающая регулярное выражение. В других вариантах конструктора ему может быть передан объект, принадлежащий перечислению RegexOptions и задающий опции, которые действуют при работе с данным объектом. Среди опций отмечу одну: ту, что позволяет компилировать регулярное выражение. В этом случае создается программа, которая и будет выполняться при каждом поиске соответствия. При разборе больших текстов скорость работы в этом случае существенно повышается.

Рассмотрим четыре основных метода класса Regex.

Метод Match запускает поиск соответствия. В качестве параметра методу передается строка поиска, где разыскивается первая подстрока, которая удовлетворяет образцу, заданному регулярным выражением. В качестве результата метод возвращает объект класса Match, описывающий результат поиска. При успешном поиске свойства объекта будут содержать информацию о найденной подстроке.

Метод Matches позволяет разыскать все вхождения, то есть все подстроки, удовлетворяющие образцу.

У алгоритма поиска есть важная особенность — разыскиваются непересекающиеся вхождения подстрок. Можно считать, что метод Matches многократно запускает метод Match, каждый раз начиная поиск с того места, на котором закончился предыдущий поиск. В качестве результата возвращается объект MatchCollection, представляющий коллекцию объектов Match.

Метод NextMatch запускает новый поиск, начиная с того места, на котором остановился предыдущий поиск.

Метод Split является обобщением метода Split класса String. Он позволяет, используя образец, разделить искомую строку на элементы. Поскольку образец может быть устроен сложнее, чем простое множество разделителей, то метод Split класса Regex эффективнее, чем его аналог класса string.

Классы Match и MatchCollection

Как уже говорилось, объекты этих классов создаются автоматически при вызове методов Match и Matches. Коллекция MatchCollection, как и все коллекции, позволяет получить доступ к каждому ее элементу — объекту Match. Можно, конечно, организовать цикл for each для последовательного доступа ко всем элементам коллекции.

Класс Match является непосредственным наследником класса Group, который, в свою очередь, является наследником класса Capture. При работе с объектами класса Match наибольший интерес представляют не столько методы класса, сколько его свойства, большая часть которых унаследована от родительских классов. Рассмотрим основные свойства:

• свойства Index, Length и Value наследованы от прародителя Capture. Они описывают найденную подстроку-индекс начала подстроки в искомой строке, длину подстроки и ее значение;

Поделиться:
Популярные книги

Дурная жена неверного дракона

Ганова Алиса
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Дурная жена неверного дракона

Барон ненавидит правила

Ренгач Евгений
8. Закон сильного
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Барон ненавидит правила

Мужчина не моей мечты

Ардова Алиса
1. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.30
рейтинг книги
Мужчина не моей мечты

Два лика Ирэн

Ром Полина
Любовные романы:
любовно-фантастические романы
6.08
рейтинг книги
Два лика Ирэн

Шаман. Ключи от дома

Калбазов Константин Георгиевич
2. Шаман
Фантастика:
боевая фантастика
7.00
рейтинг книги
Шаман. Ключи от дома

Истинная со скидкой для дракона

Жарова Анита
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Истинная со скидкой для дракона

Кто ты, моя королева

Островская Ольга
Любовные романы:
любовно-фантастические романы
7.67
рейтинг книги
Кто ты, моя королева

Солнце мертвых

Атеев Алексей Григорьевич
Фантастика:
ужасы и мистика
9.31
рейтинг книги
Солнце мертвых

Чернозёмные поля

Марков Евгений Львович
Проза:
классическая проза
5.00
рейтинг книги
Чернозёмные поля

Вооружен и очень удачлив. Трилогия

Горбенко Людмила
123. В одном томе
Фантастика:
фэнтези
6.77
рейтинг книги
Вооружен и очень удачлив. Трилогия

Между небом и землей

Anya Shinigami
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Между небом и землей

Вперед в прошлое 5

Ратманов Денис
5. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 5

Надуй щеки! Том 4

Вишневский Сергей Викторович
4. Чеболь за партой
Фантастика:
попаданцы
уся
дорама
5.00
рейтинг книги
Надуй щеки! Том 4

Новый Рал 9

Северный Лис
9. Рал!
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Новый Рал 9