MatchCollection MatchCollection MatchCollection MatchCollection Class

Определение

Представляет набор успешных совпадений, обнаруженных путем итеративного применения шаблона регулярного выражения к входной строке.Represents the set of successful matches found by iteratively applying a regular expression pattern to the input string.

public ref class MatchCollection : System::Collections::ICollection
[System.Serializable]
public class MatchCollection : System.Collections.ICollection
type MatchCollection = class
    interface ICollection
    interface IEnumerable
Public Class MatchCollection
Implements ICollection
Наследование
MatchCollectionMatchCollectionMatchCollectionMatchCollection
Атрибуты
Реализации

Примеры

В следующем примере показано использование MatchCollection класса для опроса Match набора экземпляров.The following example illustrates the use of the MatchCollection class to interrogate a set of Match instances.

#using <System.dll>

using namespace System;
using namespace System::Text::RegularExpressions;
int main()
{
   // Define a regular expression for repeated words.
   Regex^ rx = gcnew Regex( "\\b(?<word>\\w+)\\s+(\\k<word>)\\b",static_cast<RegexOptions>(RegexOptions::Compiled | RegexOptions::IgnoreCase) );

   // Define a test string.        
   String^ text = "The the quick brown fox  fox jumps over the lazy dog dog.";

   // Find matches.
   MatchCollection^ matches = rx->Matches( text );

   // Report the number of matches found.
   Console::WriteLine( "{0} matches found.", matches->Count );

   // Report on each match.
   for each (Match^ match in matches)
   {
      String^ word = match->Groups["word"]->Value;
      int index = match->Index;
      Console::WriteLine("{0} repeated at position {1}", word, index);   
   }
}
using System;
using System.Text.RegularExpressions;

public class Test
{

    public static void Main ()
    {

        // Define a regular expression for repeated words.
        Regex rx = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b",
          RegexOptions.Compiled | RegexOptions.IgnoreCase);

        // Define a test string.        
        string text = "The the quick brown fox  fox jumps over the lazy dog dog.";
        
        // Find matches.
        MatchCollection matches = rx.Matches(text);

        // Report the number of matches found.
        Console.WriteLine("{0} matches found in:\n   {1}", 
                          matches.Count, 
                          text);

        // Report on each match.
        foreach (Match match in matches)
        {
            GroupCollection groups = match.Groups;
            Console.WriteLine("'{0}' repeated at positions {1} and {2}",  
                              groups["word"].Value, 
                              groups[0].Index, 
                              groups[1].Index);
        }
        
    }
    
}
// The example produces the following output to the console:
//       3 matches found in:
//          The the quick brown fox  fox jumps over the lazy dog dog.
//       'The' repeated at positions 0 and 4
//       'fox' repeated at positions 20 and 25
//       'dog' repeated at positions 50 and 54
Imports System.Text.RegularExpressions

Public Module Test

    Public Sub Main()
        ' Define a regular expression for repeated words.
        Dim rx As New Regex("\b(?<word>\w+)\s+(\k<word>)\b", _
               RegexOptions.Compiled Or RegexOptions.IgnoreCase)

        ' Define a test string.        
        Dim text As String = "The the quick brown fox  fox jumps over the lazy dog dog."
        
        ' Find matches.
        Dim matches As MatchCollection = rx.Matches(text)

        ' Report the number of matches found.
        Console.WriteLine("{0} matches found in:", matches.Count)
        Console.WriteLine("   {0}", text)

        ' Report on each match.
        For Each match As Match In matches
            Dim groups As GroupCollection = match.Groups
            Console.WriteLine("'{0}' repeated at positions {1} and {2}", _ 
                              groups.Item("word").Value, _
                              groups.Item(0).Index, _
                              groups.Item(1).Index)
        Next
    End Sub
End Module
' The example produces the following output to the console:
'       3 matches found in:
'          The the quick brown fox  fox jumps over the lazy dog dog.
'       'The' repeated at positions 0 and 4
'       'fox' repeated at positions 20 and 25
'       'dog' repeated at positions 50 and 54

Комментарии

Коллекция является неизменяемой (только для чтения) и не имеет открытого конструктора.The collection is immutable (read-only) and has no public constructor. Метод Regex.Matches возвращает объект MatchCollection.The Regex.Matches method returns a MatchCollection object.

Коллекция содержит ноль или более System.Text.RegularExpressions.Match объектов.The collection contains zero or more System.Text.RegularExpressions.Match objects. Если сопоставление выполнено успешно, коллекция заполняется одним System.Text.RegularExpressions.Match объектом для каждого соответствия, найденного во входной строке.If the match is successful, the collection is populated with one System.Text.RegularExpressions.Match object for each match found in the input string. Если сопоставление завершается неудачно, коллекция не System.Text.RegularExpressions.Match содержит объектов, а ее Count свойство равно нулю.If the match is unsuccessful, the collection contains no System.Text.RegularExpressions.Match objects, and its Count property equals zero.

При применении шаблона регулярного выражения к определенной входной строке обработчик регулярных выражений использует один из двух методов для создания MatchCollection объекта:When applying a regular expression pattern to a particular input string, the regular expression engine uses either of two techniques to build the MatchCollection object:

  • Прямое вычисление.Direct evaluation.

    Объект заполняется все сразу, и все совпадения, полученные в результате определенного вызова Regex.Matches метода, заполняются. MatchCollectionThe MatchCollection object is populated all at once, with all matches resulting from a particular call to the Regex.Matches method. Этот метод используется при доступе к Count свойству коллекции.This technique is used when the collection's Count property is accessed. Обычно это наиболее ресурсоемкий метод заполнения коллекции и повышает производительность.It typically is the more expensive method of populating the collection and entails a greater performance hit.

  • Отложенное вычисление.Lazy evaluation.

    MatchCollection Объект заполняется по мере необходимости для каждого соответствия.The MatchCollection object is populated as needed on a match-by-match basis. Он эквивалентен обработчику регулярных выражений, который Regex.Match вызывает метод многократно и добавляет каждое совпадение в коллекцию.It is equivalent to the regular expression engine calling the Regex.Match method repeatedly and adding each match to the collection. Этот метод используется при доступе к коллекции через ее GetEnumerator метод или при обращении к ней foreach с помощью инструкции C# For Each(в) или... Next оператор (в Visual Basic).This technique is used when the collection is accessed through its GetEnumerator method, or when it is accessed using the foreach statement (in C#) or the For Each...Next statement (in Visual Basic).

Для выполнения итерации по элементам коллекции следует использовать конструкцию итерации коллекции, предоставленную вашим языком (например foreach , в C# и For Each...NextTo iterate through the members of the collection, you should use the collection iteration construct provided by your language (such as foreach in C# and For EachNext в Visual Basic) вместо получения перечислителя, возвращаемого GetEnumerator методом.in Visual Basic) instead of retrieving the enumerator that is returned by the GetEnumerator method.

Свойства

Count Count Count Count

Получает количество соответствий.Gets the number of matches.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Возвращает значение, указывающее на то, доступна ли коллекция только для чтения.Gets a value that indicates whether the collection is read only.

IsSynchronized IsSynchronized IsSynchronized IsSynchronized

Получает значение, указывающее на то, синхронизирован ли доступ к коллекции (потокобезопасный).Gets a value indicating whether access to the collection is synchronized (thread-safe).

Item[Int32] Item[Int32] Item[Int32] Item[Int32]

Получает отдельный член коллекции.Gets an individual member of the collection.

SyncRoot SyncRoot SyncRoot SyncRoot

Возвращает объект, который можно использовать для синхронизации доступа к коллекции.Gets an object that can be used to synchronize access to the collection.

Методы

CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32)

Копирует все элементы коллекции в данный массив, начиная с данного индекса.Copies all the elements of the collection to the given array starting at the given index.

CopyTo(Match[], Int32) CopyTo(Match[], Int32) CopyTo(Match[], Int32) CopyTo(Match[], Int32)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Предоставляет перечислитель, выполняющий итерацию по элементам в коллекции.Provides an enumerator that iterates through the collection.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Явные реализации интерфейса

ICollection.CopyTo(Array, Int32) ICollection.CopyTo(Array, Int32) ICollection.CopyTo(Array, Int32) ICollection.CopyTo(Array, Int32)

Копирует все элементы коллекции в заданный массив, начиная с указанного индекса.Copies all the elements of the collection to the specified array starting at the specified index.

ICollection.IsSynchronized ICollection.IsSynchronized ICollection.IsSynchronized ICollection.IsSynchronized

Получает значение, указывающее, является ли доступ к коллекции синхронизированным (потокобезопасным).Gets a value that indicates whether access to the collection is synchronized (thread-safe).

ICollection.SyncRoot ICollection.SyncRoot ICollection.SyncRoot ICollection.SyncRoot

Возвращает объект, который можно использовать для синхронизации доступа к коллекции.Gets an object that can be used to synchronize access to the collection.

ICollection<Match>.Add(Match) ICollection<Match>.Add(Match) ICollection<Match>.Add(Match) ICollection<Match>.Add(Match)
ICollection<Match>.Clear() ICollection<Match>.Clear() ICollection<Match>.Clear() ICollection<Match>.Clear()
ICollection<Match>.Contains(Match) ICollection<Match>.Contains(Match) ICollection<Match>.Contains(Match) ICollection<Match>.Contains(Match)
ICollection<Match>.Remove(Match) ICollection<Match>.Remove(Match) ICollection<Match>.Remove(Match) ICollection<Match>.Remove(Match)
IEnumerable<Match>.GetEnumerator() IEnumerable<Match>.GetEnumerator() IEnumerable<Match>.GetEnumerator() IEnumerable<Match>.GetEnumerator()
IList.Add(Object) IList.Add(Object) IList.Add(Object) IList.Add(Object)
IList.Clear() IList.Clear() IList.Clear() IList.Clear()
IList.Contains(Object) IList.Contains(Object) IList.Contains(Object) IList.Contains(Object)
IList.IndexOf(Object) IList.IndexOf(Object) IList.IndexOf(Object) IList.IndexOf(Object)
IList.Insert(Int32, Object) IList.Insert(Int32, Object) IList.Insert(Int32, Object) IList.Insert(Int32, Object)
IList.IsFixedSize IList.IsFixedSize IList.IsFixedSize IList.IsFixedSize
IList.Item[Int32] IList.Item[Int32] IList.Item[Int32] IList.Item[Int32]
IList.Remove(Object) IList.Remove(Object) IList.Remove(Object) IList.Remove(Object)
IList.RemoveAt(Int32) IList.RemoveAt(Int32) IList.RemoveAt(Int32) IList.RemoveAt(Int32)
IList<Match>.IndexOf(Match) IList<Match>.IndexOf(Match) IList<Match>.IndexOf(Match) IList<Match>.IndexOf(Match)
IList<Match>.Insert(Int32, Match) IList<Match>.Insert(Int32, Match) IList<Match>.Insert(Int32, Match) IList<Match>.Insert(Int32, Match)
IList<Match>.Item[Int32] IList<Match>.Item[Int32] IList<Match>.Item[Int32] IList<Match>.Item[Int32]
IList<Match>.RemoveAt(Int32) IList<Match>.RemoveAt(Int32) IList<Match>.RemoveAt(Int32) IList<Match>.RemoveAt(Int32)

Методы расширения

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Приводит элементы объекта IEnumerable к заданному типу.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

Преобразовывает коллекцию IEnumerable в объект IQueryable.Converts an IEnumerable to an IQueryable.

Применяется к