Regex.Matches Metoda

Definicja

Wyszukuje ciąg wejściowy dla wszystkich wystąpień wyrażenia regularnego i zwraca wszystkie dopasowania.

Przeciążenia

Matches(String, String, RegexOptions, TimeSpan)

Wyszukuje określony ciąg wejściowy dla wszystkich wystąpień określonego wyrażenia regularnego przy użyciu określonych opcji dopasowania i interwału limitu czasu.

Matches(String, String, RegexOptions)

Wyszukuje określony ciąg wejściowy dla wszystkich wystąpień określonego wyrażenia regularnego przy użyciu określonych opcji dopasowania.

Matches(String, Int32)

Wyszukuje określony ciąg wejściowy dla wszystkich wystąpień wyrażenia regularnego, zaczynając od określonej pozycji początkowej w ciągu.

Matches(String)

Wyszukuje określony ciąg wejściowy dla wszystkich wystąpień wyrażenia regularnego.

Matches(String, String)

Wyszukuje określony ciąg wejściowy dla wszystkich wystąpień określonego wyrażenia regularnego.

Matches(String, String, RegexOptions, TimeSpan)

Wyszukuje określony ciąg wejściowy dla wszystkich wystąpień określonego wyrażenia regularnego przy użyciu określonych opcji dopasowania i interwału limitu czasu.

public:
 static System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public static System.Text.RegularExpressions.MatchCollection Matches (string input, string pattern, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
static member Matches : string * string * System.Text.RegularExpressions.RegexOptions * TimeSpan -> System.Text.RegularExpressions.MatchCollection
Public Shared Function Matches (input As String, pattern As String, options As RegexOptions, matchTimeout As TimeSpan) As MatchCollection

Parametry

input
String

Ciąg do wyszukania dopasowania.

pattern
String

Wzorzec wyrażenia regularnego do dopasowania.

options
RegexOptions

Bitowa kombinacja wartości wyliczenia, które określają opcje dopasowania.

matchTimeout
TimeSpan

Interwał limitu czasu lub InfiniteMatchTimeout wskazujący, że metoda nie powinna upłynął limit czasu.

Zwraca

MatchCollection

Kolekcja Match obiektów znalezionych przez wyszukiwanie. Jeśli nie zostaną znalezione dopasowania, metoda zwraca pusty obiekt kolekcji.

Wyjątki

Wystąpił błąd analizowania wyrażeń regularnych.

input lub pattern ma wartość null.

options nie jest prawidłową kombinacją bitów RegexOptions wartości.

-lub- matchTimeout jest ujemna, zero lub większa niż około 24 dni.

Przykłady

Poniższy przykład wywołuje metodę Matches(String, String, RegexOptions, TimeSpan) , aby wykonać porównanie z uwzględnieniem wielkości liter, które pasuje do dowolnego wyrazu w zdaniu kończącym się literą "es". Następnie wywołuje metodę Matches(String, String, RegexOptions, TimeSpan) w celu przeprowadzenia porównania bez uwzględniania wielkości liter wzorca z ciągiem wejściowym. W obu przypadkach interwał limitu czasu jest ustawiony na jedną sekundę. Jak pokazują dane wyjściowe, dwie metody zwracają różne wyniki.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      string sentence = "NOTES: Any notes or comments are optional.";
      
      // Call Matches method without specifying any options.
      try {
         foreach (Match match in Regex.Matches(sentence, pattern,
                                               RegexOptions.None,
                                               TimeSpan.FromSeconds(1)))
            Console.WriteLine("Found '{0}' at position {1}", 
                              match.Value, match.Index);
      }
      catch (RegexMatchTimeoutException) {
         // Do Nothing: Assume that timeout represents no match.
      }
      Console.WriteLine();

      // Call Matches method for case-insensitive matching.
      try { 
         foreach (Match match in Regex.Matches(sentence, pattern, RegexOptions.IgnoreCase))
            Console.WriteLine("Found '{0}' at position {1}", 
                              match.Value, match.Index);
      }
      catch (RegexMatchTimeoutException) {}
   }
}
// The example displays the following output:
//       Found 'notes' at position 11
//       
//       Found 'NOTES' at position 0
//       Found 'notes' at position 11
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim sentence As String = "NOTES: Any notes or comments are optional."
      
      ' Call Matches method without specifying any options.
      For Each match As Match In Regex.Matches(sentence, pattern, 
                                               RegexOptions.None, 
                                               TimeSpan.FromSeconds(1))
         Try
            Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
         Catch e As RegexMatchTimeoutException
            ' Do Nothing: Assume that timeout represents no match.
         End Try
      Next
      Console.WriteLine()
      
      ' Call Matches method for case-insensitive matching.
      Try
         For Each match As Match In Regex.Matches(sentence, pattern, 
                                                  RegexOptions.IgnoreCase,
                                                  TimeSpan.FromSeconds(1))
            Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
         Next
      Catch de As RegexMatchTimeoutException
         ' Do Nothing: Assume that timeout represents no match.
      End Try
   End Sub
End Module
' The example displays the following output:
'       Found 'notes' at position 11
'       
'       Found 'NOTES' at position 0
'       Found 'notes' at position 11

Wzorzec \b\w+es\b wyrażenia regularnego jest zdefiniowany, jak pokazano w poniższej tabeli.

Wzorce Opis
\b Rozpoczyna dopasowanie na granicy wyrazu.
\w+ Dopasowuje co najmniej jeden znak słowa.
es Dopasuj ciąg literału "es".
\b Kończy dopasowanie na granicy wyrazu.

Uwagi

Metoda jest podobna Matches(String, String, RegexOptions, TimeSpan) do Match(String, String, RegexOptions, TimeSpan) metody , z tą różnicą, że zwraca informacje o wszystkich dopasowaniach znalezionych w ciągu wejściowym zamiast pojedynczego dopasowania. Odpowiada to następującemu kodowi:

   try {
      Match match = Regex.Match(input, pattern, options,
                                TimeSpan.FromSeconds(1));
      while (match.Success) {
            // Handle match here...

            match = match.NextMatch();
      }  
   }
   catch (RegexMatchTimeoutException) {
      // Do nothing: assume that exception represents no match.
   }
   Try
      Dim match As Match = Regex.Match(input, pattern, options, 
                                       TimeSpan.FromSeconds(1))
      Do While match.Success
            ' Handle match here...

            match = match.NextMatch()
      Loop  
   Catch e As RegexMatchTimeoutException
      ' Do nothing: assume that exception represents no match.
   End Try

Metody statyczne Matches są równoważne konstruowaniu Regex obiektu z określonym wzorcem wyrażenia regularnego i wywoływaniem metody Matcheswystąpienia .

Parametr pattern składa się z elementów języka wyrażeń regularnych, które symbolicznie opisują ciąg do dopasowania. Aby uzyskać więcej informacji na temat wyrażeń regularnych, zobacz .NET Regular Expressions and Regular Expression Language - Quick Reference (Wyrażenia regularne platformy .NET i język wyrażeń regularnych — krótki przewodnik).

Metoda Matches używa opóźnionej oceny, aby wypełnić zwrócony MatchCollection obiekt. Uzyskiwanie dostępu do elementów członkowskich tej kolekcji, takich jak MatchCollection.Count i MatchCollection.CopyTo powoduje natychmiastowe wypełnienie kolekcji. Aby skorzystać z leniwej oceny, należy wykonać iterację kolekcji przy użyciu konstrukcji takiej jak foreach w języku C# i For Each...Next w Visual Basic.

Ze względu na leniwą ocenę wywołanie Matches metody nie zgłasza RegexMatchTimeoutException wyjątku. Jednak wyjątek jest zgłaszany, gdy operacja jest wykonywana na MatchCollection obiekcie zwróconym przez tę metodę, jeśli pasujący interwał przekracza ten interwał limitu czasu określony przezmatchTimeout parametr .

Uwagi dotyczące wywoływania

Zalecamy ustawienie parametru matchTimeout na odpowiednią wartość, na przykład dwie sekundy. Jeśli wyłączysz limity czasu, określając InfiniteMatchTimeout, aparat wyrażeń regularnych zapewnia nieco lepszą wydajność. Należy jednak wyłączyć limity czasu tylko w następujących warunkach:

  • Gdy dane wejściowe przetwarzane przez wyrażenie regularne pochodzą ze znanego i zaufanego źródła lub składa się z tekstu statycznego. Wyklucza to tekst, który został dynamicznie wprowadzany przez użytkowników.

— Gdy wzorzec wyrażenia regularnego został dokładnie przetestowany w celu zapewnienia, że efektywnie obsługuje dopasowania, niezgodne i bliskie dopasowania.

— Gdy wzorzec wyrażenia regularnego nie zawiera żadnych elementów języka, które są znane z nadmiernego wycofywania podczas przetwarzania zbliżonego dopasowania.

Zobacz też

Dotyczy

Matches(String, String, RegexOptions)

Wyszukuje określony ciąg wejściowy dla wszystkich wystąpień określonego wyrażenia regularnego przy użyciu określonych opcji dopasowania.

public:
 static System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options);
public static System.Text.RegularExpressions.MatchCollection Matches (string input, string pattern, System.Text.RegularExpressions.RegexOptions options);
static member Matches : string * string * System.Text.RegularExpressions.RegexOptions -> System.Text.RegularExpressions.MatchCollection
Public Shared Function Matches (input As String, pattern As String, options As RegexOptions) As MatchCollection

Parametry

input
String

Ciąg do wyszukania dopasowania.

pattern
String

Wzorzec wyrażenia regularnego do dopasowania.

options
RegexOptions

Bitowa kombinacja wartości wyliczenia, które określają opcje dopasowania.

Zwraca

MatchCollection

Kolekcja Match obiektów znalezionych przez wyszukiwanie. Jeśli nie zostaną znalezione dopasowania, metoda zwraca pusty obiekt kolekcji.

Wyjątki

Wystąpił błąd analizowania wyrażeń regularnych.

input lub pattern ma wartość null.

options nie jest prawidłową kombinacją bitów RegexOptions wartości.

Przykłady

Poniższy przykład wywołuje metodę w Matches(String, String) celu zidentyfikowania dowolnego wyrazu w zdaniu kończącym się ciągiem "es", a następnie wywołuje Matches(String, String, RegexOptions) metodę w celu przeprowadzenia porównania bez uwzględniania wielkości liter wzorca z ciągiem wejściowym. Jak pokazują dane wyjściowe, dwie metody zwracają różne wyniki.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      string sentence = "NOTES: Any notes or comments are optional.";
      
      // Call Matches method without specifying any options.
      foreach (Match match in Regex.Matches(sentence, pattern))
         Console.WriteLine("Found '{0}' at position {1}", 
                           match.Value, match.Index);
      Console.WriteLine();

      // Call Matches method for case-insensitive matching.
      foreach (Match match in Regex.Matches(sentence, pattern, RegexOptions.IgnoreCase))
         Console.WriteLine("Found '{0}' at position {1}", 
                           match.Value, match.Index);
   }
}
// The example displays the following output:
//       Found 'notes' at position 11
//       
//       Found 'NOTES' at position 0
//       Found 'notes' at position 11
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim sentence As String = "NOTES: Any notes or comments are optional."
      
      ' Call Matches method without specifying any options.
      For Each match As Match In Regex.Matches(sentence, pattern)
         Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
      Next
      Console.WriteLine()
      
      ' Call Matches method for case-insensitive matching.
      For Each match As Match In Regex.Matches(sentence, pattern, RegexOptions.IgnoreCase)
         Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
      Next
   End Sub
End Module
' The example displays the following output:
'       Found 'notes' at position 11
'       
'       Found 'NOTES' at position 0
'       Found 'notes' at position 11

Wzorzec \b\w+es\b wyrażenia regularnego jest zdefiniowany, jak pokazano w poniższej tabeli.

Wzorce Opis
\b Rozpoczyna dopasowanie na granicy wyrazu.
\w+ Dopasowuje co najmniej jeden znak słowa.
es Dopasuj ciąg literału "es".
\b Kończy dopasowanie na granicy wyrazu.

Uwagi

Metoda jest podobna Matches(String, String, RegexOptions) do Match(String, String, RegexOptions) metody , z tą różnicą, że zwraca informacje o wszystkich dopasowaniach znalezionych w ciągu wejściowym zamiast pojedynczego dopasowania. Odpowiada to następującemu kodowi:

Match match = Regex.Match(input, pattern, options);
while (match.Success) {
      // Handle match here...

      match = match.NextMatch();
}
Dim match As Match = Regex.Match(input, pattern, options)
Do While match.Success
      ' Handle match here...

      match = match.NextMatch()
Loop

Metody statyczne Matches są równoważne konstruowaniu Regex obiektu z określonym wzorcem wyrażenia regularnego i wywoływaniem metody Matcheswystąpienia .

Parametr pattern składa się z elementów języka wyrażeń regularnych, które symbolicznie opisują ciąg do dopasowania. Aby uzyskać więcej informacji na temat wyrażeń regularnych, zobacz .NET Regular Expressions and Regular Expression Language - Quick Reference (Wyrażenia regularne platformy .NET i język wyrażeń regularnych — krótki przewodnik).

Metoda Matches używa opóźnionej oceny, aby wypełnić zwrócony MatchCollection obiekt. Uzyskiwanie dostępu do elementów członkowskich tej kolekcji, takich jak MatchCollection.Count i MatchCollection.CopyTo powoduje natychmiastowe wypełnienie kolekcji. Aby skorzystać z leniwej oceny, należy wykonać iterację kolekcji przy użyciu konstrukcji takiej jak foreach w języku C# i For Each...Next w Visual Basic.

Ze względu na leniwą ocenę wywołanie Matches(String, String) metody nie zgłasza RegexMatchTimeoutException wyjątku. Jednak wyjątek jest zgłaszany, gdy operacja jest wykonywana na MatchCollection obiekcie zwróconym przez tę metodę, jeśli interwał limitu czasu jest zdefiniowany przez właściwość "REGEX_DEFAULT_MATCH_TIMEOUT" bieżącej domeny aplikacji, a operacja dopasowania przekracza ten interwał limitu czasu.

Uwagi dotyczące wywoływania

Ta metoda powoduje przekroczenie limitu czasu po interwale równym domyślnej wartości limitu czasu domeny aplikacji, w której jest wywoływana. Jeśli wartość limitu czasu nie została zdefiniowana dla domeny aplikacji, zostanie użyta wartość InfiniteMatchTimeout, która uniemożliwia przekroczenie limitu czasu metody. Zalecaną metodą statyczną pobierania wielu dopasowań wzorca jest Matches(String, String, RegexOptions, TimeSpan), która umożliwia ustawienie interwału limitu czasu.

Zobacz też

Dotyczy

Matches(String, Int32)

Wyszukuje określony ciąg wejściowy dla wszystkich wystąpień wyrażenia regularnego, zaczynając od określonej pozycji początkowej w ciągu.

public:
 System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input, int startat);
public System.Text.RegularExpressions.MatchCollection Matches (string input, int startat);
member this.Matches : string * int -> System.Text.RegularExpressions.MatchCollection
Public Function Matches (input As String, startat As Integer) As MatchCollection

Parametry

input
String

Ciąg do wyszukania dopasowania.

startat
Int32

Pozycja znaku w ciągu wejściowym, na którym ma zostać uruchomiona wyszukiwanie.

Zwraca

MatchCollection

Kolekcja obiektów znalezionych Match przez wyszukiwanie. Jeśli nie znaleziono dopasowań, metoda zwraca pusty obiekt kolekcji.

Wyjątki

input to null.

startat jest mniejsza niż zero lub większa niż długość obiektu input.

Przykłady

W poniższym przykładzie użyto Match(String) metody , aby znaleźć pierwsze słowo w zdaniu kończącym się ciągiem "es", a następnie wywołuje metodę Matches(String, Int32) w celu zidentyfikowania dodatkowych słów kończących się na "es".

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      Regex rgx = new Regex(pattern);
      string sentence = "Who writes these notes and uses our paper?";
      
      // Get the first match.
      Match match = rgx.Match(sentence);
      if (match.Success) {
         Console.WriteLine("Found first 'es' in '{0}' at position {1}", 
                           match.Value, match.Index);
         // Get any additional matches.
         foreach (Match m in rgx.Matches(sentence, match.Index + match.Length))
            Console.WriteLine("Also found '{0}' at position {1}", 
                              m.Value, m.Index);
      }   
   }
}
// The example displays the following output:
//       Found first 'es' in 'writes' at position 4
//       Also found 'notes' at position 17
//       Also found 'uses' at position 27
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim rgx As New Regex(pattern)
      Dim sentence As String = "Who writes these notes and uses our paper?"
      
      ' Get the first match.
      Dim match As Match = rgx.Match(sentence)
      If match.Success Then
         Console.WriteLine("Found first 'es' in '{0}' at position {1}", _
                           match.Value, match.Index)
         ' Get any additional matches.
         For Each match In rgx.Matches(sentence, match.Index + match.Length)
            Console.WriteLine("Also found '{0}' at position {1}", _
                              match.Value, match.Index)
         Next
      End If   
   End Sub
End Module
' The example displays the following output:
'       Found first 'es' in 'writes' at position 4
'       Also found 'notes' at position 17
'       Also found 'uses' at position 27

Wzorzec \b\w+es\b wyrażenia regularnego jest zdefiniowany, jak pokazano w poniższej tabeli.

Wzorce Opis
\b Rozpoczyna dopasowanie na granicy wyrazu.
\w+ Dopasowuje co najmniej jeden znak słowa.
es Dopasuj ciąg literału "es".
\b Kończy dopasowanie na granicy wyrazu.

Uwagi

Metoda jest podobna Matches(String, Int32) do Match(String, Int32) metody, z tą różnicą, że zwraca informacje o wszystkich dopasowaniach znalezionych w ciągu wejściowym zamiast jednego dopasowania. Odpowiada to następującemu kodowi:

Match match = regex.Match(input, startAt);
while (match.Success) {
      // Handle match here...

      match = match.NextMatch();
}
Dim match As Match = regex.Match(input, startAt)
Do While match.Success
      ' Handle match here...

      match = match.NextMatch()
Loop

Wzorzec wyrażenia regularnego, dla którego Matches(String, Int32) metoda wyszukuje, jest definiowana przez wywołanie jednego z Regex konstruktorów klasy. Aby uzyskać więcej informacji na temat elementów, które mogą tworzyć wzorzec wyrażeń regularnych, zobacz Język wyrażeń regularnych — szybki przewodnik.

Aby uzyskać więcej informacji na temat startatprogramu , zobacz sekcję Uwagi w temacie Match(String, Int32).

Metoda Matches używa leniwej oceny, aby wypełnić zwrócony MatchCollection obiekt. Uzyskiwanie dostępu do elementów członkowskich tej kolekcji, takich jak MatchCollection.Count i MatchCollection.CopyTo powoduje natychmiastowe wypełnienie kolekcji. Aby skorzystać z leniwej oceny, należy iterować kolekcję przy użyciu konstrukcji, takiej jak foreach w języku C# i For Each...Next w Visual Basic.

Ze względu na jego leniwą ocenę wywołanie Matches(String, Int32) metody nie zgłasza wyjątku RegexMatchTimeoutException . Jednak wyjątek jest zgłaszany, gdy operacja jest wykonywana na MatchCollection obiekcie zwróconym przez tę metodę, jeśli MatchTimeout właściwość nie Regex.InfiniteMatchTimeout jest i zgodna operacja przekracza interwał limitu czasu.

Zobacz też

Dotyczy

Matches(String)

Wyszukuje określony ciąg wejściowy dla wszystkich wystąpień wyrażenia regularnego.

public:
 System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input);
public System.Text.RegularExpressions.MatchCollection Matches (string input);
member this.Matches : string -> System.Text.RegularExpressions.MatchCollection
Public Function Matches (input As String) As MatchCollection

Parametry

input
String

Ciąg do wyszukania dopasowania.

Zwraca

MatchCollection

Kolekcja obiektów znalezionych Match przez wyszukiwanie. Jeśli nie znaleziono dopasowań, metoda zwraca pusty obiekt kolekcji.

Wyjątki

input to null.

Przykłady

W poniższym przykładzie użyto Matches(String) metody , aby zidentyfikować wszystkie wyrazy w zdaniu kończącym się na "es".

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      Regex rgx = new Regex(pattern);
      string sentence = "Who writes these notes?";
      
      foreach (Match match in rgx.Matches(sentence))
         Console.WriteLine("Found '{0}' at position {1}", 
                           match.Value, match.Index);
   }
}
// The example displays the following output:
//       Found 'writes' at position 4
//       Found 'notes' at position 17
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim rgx As New Regex(pattern)
      Dim sentence As String = "Who writes these notes?"
      
      For Each match As Match In rgx.Matches(sentence)
         Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
      Next
   End Sub
End Module
' The example displays the following output:
'       Found 'writes' at position 4
'       Found 'notes' at position 17

Wzorzec \b\w+es\b wyrażenia regularnego jest zdefiniowany, jak pokazano w poniższej tabeli.

Wzorce Opis
\b Rozpoczyna dopasowanie na granicy wyrazu.
\w+ Dopasowuje co najmniej jeden znak słowa.
es Dopasuj ciąg literału "es".
\b Kończy dopasowanie na granicy wyrazu.

Uwagi

Metoda jest podobna Matches(String) do Match(String) metody, z tą różnicą, że zwraca informacje o wszystkich dopasowaniach znalezionych w ciągu wejściowym zamiast jednego dopasowania. Odpowiada to następującemu kodowi:

Match match = regex.Match(input);
while (match.Success) {
      // Handle match here...

      match = match.NextMatch();
}
Dim match As Match = regex.Match(input)
Do While match.Success
      ' Handle match here...

      match = match.NextMatch()
Loop

Kolekcja zawiera tylko dopasowania i kończy się przy pierwszym niezgodności.

Wzorzec wyrażenia regularnego, dla którego Matches(String) metoda wyszukuje, jest definiowana przez wywołanie jednego z Regex konstruktorów klasy. Aby uzyskać więcej informacji na temat elementów, które mogą tworzyć wzorzec wyrażeń regularnych, zobacz Język wyrażeń regularnych — szybki przewodnik.

Metoda Matches używa leniwej oceny, aby wypełnić zwrócony MatchCollection obiekt. Uzyskiwanie dostępu do elementów członkowskich tej kolekcji, takich jak MatchCollection.Count i MatchCollection.CopyTo powoduje natychmiastowe wypełnienie kolekcji. Aby skorzystać z leniwej oceny, należy iterować kolekcję przy użyciu konstrukcji, takiej jak foreach w języku C# i For Each...Next w Visual Basic.

Ze względu na jego leniwą ocenę wywołanie Matches(String) metody nie zgłasza wyjątku RegexMatchTimeoutException . Jednak wyjątek jest zgłaszany, gdy operacja jest wykonywana na MatchCollection obiekcie zwróconym przez tę metodę, jeśli MatchTimeout właściwość nie Regex.InfiniteMatchTimeout jest i zgodna operacja przekracza interwał limitu czasu.

Zobacz też

Dotyczy

Matches(String, String)

Wyszukuje określony ciąg wejściowy dla wszystkich wystąpień określonego wyrażenia regularnego.

public:
 static System::Text::RegularExpressions::MatchCollection ^ Matches(System::String ^ input, System::String ^ pattern);
public static System.Text.RegularExpressions.MatchCollection Matches (string input, string pattern);
static member Matches : string * string -> System.Text.RegularExpressions.MatchCollection
Public Shared Function Matches (input As String, pattern As String) As MatchCollection

Parametry

input
String

Ciąg do wyszukania dopasowania.

pattern
String

Wzorzec wyrażenia regularnego do dopasowania.

Zwraca

MatchCollection

Kolekcja obiektów znalezionych Match przez wyszukiwanie. Jeśli nie znaleziono dopasowań, metoda zwraca pusty obiekt kolekcji.

Wyjątki

Wystąpił błąd analizowania wyrażeń regularnych.

input lub pattern ma wartość null.

Przykłady

W poniższym przykładzie użyto Matches(String, String) metody , aby zidentyfikować dowolne słowo w zdaniu kończącym się ciągiem "es".

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string pattern = @"\b\w+es\b";
      string sentence = "Who writes these notes?";
      
      foreach (Match match in Regex.Matches(sentence, pattern))
         Console.WriteLine("Found '{0}' at position {1}", 
                           match.Value, match.Index);
   }
}
// The example displays the following output:
//       Found 'writes' at position 4
//       Found 'notes' at position 17
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\b\w+es\b"
      Dim sentence As String = "Who writes these notes?"
      For Each match As Match In Regex.Matches(sentence, pattern)
         Console.WriteLine("Found '{0}' at position {1}", match.Value, match.Index)
      Next
   End Sub
End Module
' The example displays the following output:
'       Found 'writes' at position 4
'       Found 'notes' at position 17

Wzorzec \b\w+es\b wyrażenia regularnego jest zdefiniowany, jak pokazano w poniższej tabeli.

Wzorce Opis
\b Rozpoczyna dopasowanie na granicy wyrazu.
\w+ Dopasowuje co najmniej jeden znak słowa.
es Dopasuj ciąg literału "es".
\b Kończy dopasowanie na granicy wyrazu.

Uwagi

Metoda jest podobna Matches(String, String) do Match(String, String) metody, z tą różnicą, że zwraca informacje o wszystkich dopasowaniach znalezionych w ciągu wejściowym zamiast jednego dopasowania. Odpowiada to następującemu kodowi:

Match match = Regex.Match(input, pattern);
while (match.Success) {
      // Handle match here...

      match = match.NextMatch();
}
Dim match As Match = Regex.Match(input, pattern)
Do While match.Success
      ' Handle match here...

      match = match.NextMatch()
Loop

Metody statyczne Matches są równoważne konstruowaniu Regex obiektu z określonym wzorcem wyrażenia regularnego i wywoływaniem metody Matcheswystąpienia .

Parametr pattern składa się z elementów języka wyrażeń regularnych, które symbolicznie opisują ciąg do dopasowania. Aby uzyskać więcej informacji na temat wyrażeń regularnych, zobacz .NET Regular Expressions and Regular Expression Language — quick reference (Wyrażenia regularne platformy .NET i język wyrażeń regularnych — szybki przewodnik).

Metoda Matches używa leniwej oceny, aby wypełnić zwrócony MatchCollection obiekt. Uzyskiwanie dostępu do elementów członkowskich tej kolekcji, takich jak MatchCollection.Count i MatchCollection.CopyTo powoduje natychmiastowe wypełnienie kolekcji. Aby skorzystać z leniwej oceny, należy iterować kolekcję przy użyciu konstrukcji, takiej jak foreach w języku C# i For Each...Next w Visual Basic.

Ze względu na jego leniwą ocenę wywołanie Matches(String, String) metody nie zgłasza wyjątku RegexMatchTimeoutException . Jednak wyjątek jest zgłaszany, gdy operacja jest wykonywana na MatchCollection obiekcie zwróconym przez tę metodę, jeśli interwał przekroczenia limitu czasu jest definiowany przez właściwość "REGEX_DEFAULT_MATCH_TIMEOUT" bieżącej domeny aplikacji, a zgodna operacja przekracza ten interwał przekroczenia limitu czasu.

Uwagi dotyczące wywoływania

Ta metoda powoduje przekroczenie limitu czasu po interwale równym domyślnej wartości limitu czasu domeny aplikacji, w której jest wywoływana. Jeśli wartość limitu czasu nie została zdefiniowana dla domeny aplikacji, zostanie użyta wartość InfiniteMatchTimeout, która uniemożliwia przekroczenie limitu czasu metody. Zalecaną metodą statyczną pobierania wielu dopasowań wzorca jest Matches(String, String, RegexOptions, TimeSpan), która umożliwia określenie interwału limitu czasu.

Zobacz też

Dotyczy