Regex.Matches Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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)
- Źródło:
- Regex.Match.cs
- Źródło:
- Regex.Match.cs
- Źródło:
- Regex.Match.cs
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
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
to 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) w celu przeprowadzenia porównania uwzględniającego wielkość liter, które pasuje do dowolnego wyrazu w zdaniu kończącym się ciągiem "es". Następnie wywołuje Matches(String, String, RegexOptions, TimeSpan) metodę 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 pokazano w danych wyjściowych, 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 jednego 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 Matches
wystą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 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 zgodna operacja przekracza ten interwał limitu czasu określony przezmatchTimeout
parametr .
Uwagi dotyczące wywoływania
Zalecamy ustawienie parametru matchTimeout
na odpowiednią wartość, taką jak dwie sekundy. Jeśli wyłączysz limity czasu, określając InfiniteMatchTimeoutwartość , 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ładają 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, aby upewnić się, że efektywnie obsługuje dopasowania, niezgodne i zbliżające się dopasowania.
Gdy wzorzec wyrażenia regularnego nie zawiera żadnych elementów języka, które są znane do nadmiernego wycofywania podczas przetwarzania niemal zgodnego.
Zobacz też
Dotyczy
Matches(String, String, RegexOptions)
- Źródło:
- Regex.Match.cs
- Źródło:
- Regex.Match.cs
- Źródło:
- Regex.Match.cs
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
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
to null
.
options
nie jest prawidłową kombinacją bitów RegexOptions wartości.
Przykłady
Poniższy przykład wywołuje metodę Matches(String, String) w 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 pokazano w danych wyjściowych, 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 jednego 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 Matches
wystą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 dla domeny aplikacji nie zdefiniowano wartości limitu czasu, 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)
- Źródło:
- Regex.Match.cs
- Źródło:
- Regex.Match.cs
- Źródło:
- Regex.Match.cs
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
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 startat
programu , 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)
- Źródło:
- Regex.Match.cs
- Źródło:
- Regex.Match.cs
- Źródło:
- Regex.Match.cs
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
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)
- Źródło:
- Regex.Match.cs
- Źródło:
- Regex.Match.cs
- Źródło:
- Regex.Match.cs
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
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
to 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 Matches
wystą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 dla domeny aplikacji nie zdefiniowano wartości limitu czasu, 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.