Объекты этих классов создаются автоматически при вызове методов Match и Matches. Коллекция MatchCollection, как и все коллекции, позволяет получить доступ к каждому ее элементу - объекту Match. Можно, конечно, организовать цикл foreach для последовательного доступа ко всем элементам коллекции.
При работе с объектами класса Match наибольший интерес представляют не столько методы класса, сколько его свойства, большая часть которых унаследована от родительских классов. Рассмотрим основные свойства:
· свойства Index, Length и Value наследованы от прародителя Capture. Они описывают найденную подстроку- индекс начала подстроки в искомой строке, длину подстроки и ее значение;
· свойство Groups класса Match возвращает коллекцию групп - объект GroupCollection, который позволяет работать с группами, созданными в процессе поиска соответствия;
· свойство Captures, наследованное от объекта Group, возвращает коллекцию CaptureCollection. Как видите, при работе с регулярными выражениями реально приходится создавать один объект класса Regex, объекты других классов автоматически появляются в процессе работы с объектами Regex.
|
|
// Программа 7. Поиск всех образцов, соответствующих регулярному выражению
public static void Main() {
string si = "Это строка для поиска";
// найти любой пробельный символ следующий за непробельным
Regex theReg = new Regex(@"(\S+)\s");
// получить коллекцию результата поиска
MatchCollection theMatches = theReg.Matches (si);
// перебор всей коллекции
foreach (Match theMatch in theMatches) {
Console.WriteLine("theMatch.Length: {0}", theMatch.Length);
if (theMatch.Length!= 0)
Console.WriteLine("theMatch: {0}", theMatch.ToString());
} }
TheMatch.Length: 4
TheMatch: Это
TheMatch.Length: 7
TheMatch: строка
TheMatch.Length: 4
TheMatch: для