Regex.Match 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 podciąg zgodny ze wzorcem wyrażenia regularnego i zwraca pierwsze wystąpienie jako pojedynczy Match obiekt.
Przeciążenia
Match(String, String, RegexOptions) |
Wyszukuje ciąg wejściowy pierwszego wystąpienia określonego wyrażenia regularnego przy użyciu określonych opcji dopasowania. |
Match(String) |
Wyszukuje określony ciąg wejściowy dla pierwszego wystąpienia wyrażenia regularnego określonego w konstruktorze Regex . |
Match(String, Int32) |
Wyszukuje ciąg wejściowy pierwszego wystąpienia wyrażenia regularnego, zaczynając od określonej pozycji początkowej w ciągu. |
Match(String, String) |
Wyszukuje określony ciąg wejściowy dla pierwszego wystąpienia określonego wyrażenia regularnego. |
Match(String, Int32, Int32) |
Wyszukuje ciąg wejściowy pierwszego wystąpienia wyrażenia regularnego, zaczynając od określonej pozycji początkowej i wyszukując tylko określoną liczbę znaków. |
Match(String, String, RegexOptions, TimeSpan) |
Wyszukuje ciąg wejściowy dla pierwszego wystąpienia określonego wyrażenia regularnego przy użyciu określonych opcji dopasowania i interwału przekroczenia limitu czasu. |
Match(String, String, RegexOptions)
Wyszukuje ciąg wejściowy pierwszego wystąpienia określonego wyrażenia regularnego przy użyciu określonych opcji dopasowania.
public:
static System::Text::RegularExpressions::Match ^ Match(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options);
public static System.Text.RegularExpressions.Match Match (string input, string pattern, System.Text.RegularExpressions.RegexOptions options);
static member Match : string * string * System.Text.RegularExpressions.RegexOptions -> System.Text.RegularExpressions.Match
Public Shared Function Match (input As String, pattern As String, options As RegexOptions) As Match
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 zapewniają opcje dopasowania.
Zwraca
Obiekt zawierający informacje o dopasowaniu.
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.
Wystąpił limit czasu. Aby uzyskać więcej informacji na temat limitów czasu, zobacz sekcję Uwagi.
Przykłady
W poniższym przykładzie zdefiniowano wyrażenie regularne, które pasuje do wyrazów rozpoczynających się literą "a". Używa RegexOptions.IgnoreCase ona opcji, aby upewnić się, że wyrażenie regularne lokalizuje wyrazy rozpoczynające się zarówno wielkimi literami "a", jak i małymi literami "a".
using System;
using System.Text.RegularExpressions;
namespace Examples
{
public class Example2
{
public static void Main()
{
string pattern = @"\ba\w*\b";
string input = "An extraordinary day dawns with each new day.";
Match m = Regex.Match(input, pattern, RegexOptions.IgnoreCase);
if (m.Success)
Console.WriteLine("Found '{0}' at position {1}.", m.Value, m.Index);
}
}
}
// The example displays the following output:
// Found 'An' at position 0.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim pattern As String = "\ba\w*\b"
Dim input As String = "An extraordinary day dawns with each new day."
Dim m As Match = Regex.Match(input, pattern, RegexOptions.IgnoreCase)
If m.Success Then
Console.WriteLine("Found '{0}' at position {1}.", m.Value, m.Index)
End If
End Sub
End Module
' The example displays the following output:
' Found 'An' at position 0.
Wzorzec \ba\w*\b
wyrażenia regularnego jest interpretowany, jak pokazano w poniższej tabeli.
Wzorce | Opis |
---|---|
\b |
Rozpoczyna dopasowanie na granicy wyrazu. |
a |
Dopasuj znak "a". |
\w* |
Dopasuj zero, co najmniej jeden znak słowa. |
\b |
Kończy dopasowanie na granicy wyrazu. |
Uwagi
Metoda Match(String, String, RegexOptions) zwraca pierwszy podciąg zgodny ze wzorcem wyrażenia regularnego w ciągu wejściowym. Aby uzyskać informacje o elementach języka używanych do tworzenia wzorca wyrażeń regularnych, zobacz Język wyrażeń regularnych — szybki przewodnik.
Metoda statyczna Match(String, String, RegexOptions) jest odpowiednikiem konstruowania Regex obiektu za pomocą konstruktora Regex(String, RegexOptions) i wywoływania metody wystąpienia Match(String) .
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).
Możesz określić, czy wzorzec wyrażenia regularnego został znaleziony w ciągu wejściowym, sprawdzając wartość właściwości zwracanego Match obiektu Success . Jeśli zostanie znalezione dopasowanie, właściwość zwróconego Match obiektu Value zawiera podciąg, który jest zgodny ze input
wzorcem wyrażenia regularnego. Jeśli nie znaleziono dopasowania, jego wartość to String.Empty.
Ta metoda zwraca pierwszy podciąg znaleziony w input
pliku, który jest zgodny ze wzorcem wyrażenia regularnego. Kolejne dopasowania można pobrać, wielokrotnie wywołując metodę zwracanego Match obiektu NextMatch . Można również pobrać wszystkie dopasowania w pojedynczym wywołaniu metody, wywołując metodę Regex.Matches(String, String, RegexOptions) .
Wyjątek RegexMatchTimeoutException jest zgłaszany, jeśli czas wykonywania zgodnej operacji przekracza interwał limitu czasu określony dla domeny aplikacji, w której jest wywoływana metoda. Jeśli w właściwościach domeny aplikacji nie zdefiniowano limitu czasu lub jeśli wartość limitu czasu wynosi Regex.InfiniteMatchTimeout, nie zostanie zgłoszony wyjątek.
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 dopasowania wzorca jest Match(String, String), która umożliwia ustawienie interwału limitu czasu.
Zobacz też
Dotyczy
Match(String)
Wyszukuje określony ciąg wejściowy dla pierwszego wystąpienia wyrażenia regularnego określonego w konstruktorze Regex .
public:
System::Text::RegularExpressions::Match ^ Match(System::String ^ input);
public System.Text.RegularExpressions.Match Match (string input);
member this.Match : string -> System.Text.RegularExpressions.Match
Public Function Match (input As String) As Match
Parametry
- input
- String
Ciąg do wyszukania dopasowania.
Zwraca
Obiekt zawierający informacje o dopasowaniu.
Wyjątki
input
to null
.
Wystąpił limit czasu. Aby uzyskać więcej informacji na temat limitów czasu, zobacz sekcję Uwagi.
Przykłady
Poniższy przykład zawiera dopasowania wzorca wyrażenia regularnego w ciągu, a następnie wyświetla listę pasujących grup, przechwytuje i przechwytuje pozycje.
#using <System.dll>
using namespace System;
using namespace System::Text::RegularExpressions;
void main()
{
String^ text = "One car red car blue car";
String^ pat = "(\\w+)\\s+(car)";
// Compile the regular expression.
Regex^ r = gcnew Regex( pat,RegexOptions::IgnoreCase );
// Match the regular expression pattern against a text string.
Match^ m = r->Match(text);
int matchCount = 0;
while ( m->Success )
{
Console::WriteLine( "Match{0}", ++matchCount );
for ( int i = 1; i <= 2; i++ )
{
Group^ g = m->Groups[ i ];
Console::WriteLine( "Group{0}='{1}'", i, g );
CaptureCollection^ cc = g->Captures;
for ( int j = 0; j < cc->Count; j++ )
{
Capture^ c = cc[ j ];
System::Console::WriteLine( "Capture{0}='{1}', Position={2}", j, c, c->Index );
}
}
m = m->NextMatch();
}
}
// This example displays the following output:
// Match1
// Group1='One'
// Capture0='One', Position=0
// Group2='car'
// Capture0='car', Position=4
// Match2
// Group1='red'
// Capture0='red', Position=8
// Group2='car'
// Capture0='car', Position=12
// Match3
// Group1='blue'
// Capture0='blue', Position=16
// Group2='car'
// Capture0='car', Position=21
using System;
using System.Text.RegularExpressions;
class Example
{
static void Main()
{
string text = "One car red car blue car";
string pat = @"(\w+)\s+(car)";
// Instantiate the regular expression object.
Regex r = new Regex(pat, RegexOptions.IgnoreCase);
// Match the regular expression pattern against a text string.
Match m = r.Match(text);
int matchCount = 0;
while (m.Success)
{
Console.WriteLine("Match"+ (++matchCount));
for (int i = 1; i <= 2; i++)
{
Group g = m.Groups[i];
Console.WriteLine("Group"+i+"='" + g + "'");
CaptureCollection cc = g.Captures;
for (int j = 0; j < cc.Count; j++)
{
Capture c = cc[j];
System.Console.WriteLine("Capture"+j+"='" + c + "', Position="+c.Index);
}
}
m = m.NextMatch();
}
}
}
// This example displays the following output:
// Match1
// Group1='One'
// Capture0='One', Position=0
// Group2='car'
// Capture0='car', Position=4
// Match2
// Group1='red'
// Capture0='red', Position=8
// Group2='car'
// Capture0='car', Position=12
// Match3
// Group1='blue'
// Capture0='blue', Position=16
// Group2='car'
// Capture0='car', Position=21
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim text As String = "One car red car blue car"
Dim pattern As String = "(\w+)\s+(car)"
' Instantiate the regular expression object.
Dim r As Regex = new Regex(pattern, RegexOptions.IgnoreCase)
' Match the regular expression pattern against a text string.
Dim m As Match = r.Match(text)
Dim matchcount as Integer = 0
Do While m.Success
matchCount += 1
Console.WriteLine("Match" & (matchCount))
Dim i As Integer
For i = 1 to 2
Dim g as Group = m.Groups(i)
Console.WriteLine("Group" & i & "='" & g.ToString() & "'")
Dim cc As CaptureCollection = g.Captures
Dim j As Integer
For j = 0 to cc.Count - 1
Dim c As Capture = cc(j)
Console.WriteLine("Capture" & j & "='" & c.ToString() _
& "', Position=" & c.Index)
Next
Next
m = m.NextMatch()
Loop
End Sub
End Module
' This example displays the following output:
' Match1
' Group1='One'
' Capture0='One', Position=0
' Group2='car'
' Capture0='car', Position=4
' Match2
' Group1='red'
' Capture0='red', Position=8
' Group2='car'
' Capture0='car', Position=12
' Match3
' Group1='blue'
' Capture0='blue', Position=16
' Group2='car'
' Capture0='car', Position=21
Wzorzec (\w+)\s+(car)
wyrażenia regularnego pasuje do wystąpień słowa "car" wraz ze słowem poprzedzającym go. Jest on interpretowany, jak pokazano w poniższej tabeli.
Wzorce | Opis |
---|---|
(\w+) |
Dopasowuje co najmniej jeden znak słowa. Jest to pierwsza grupa przechwytywania. |
\s+ |
Dopasuj co najmniej jeden znak odstępu. |
(samochód) | Dopasuj ciąg literału "car". Jest to druga grupa przechwytywania. |
Uwagi
Metoda Match(String) zwraca pierwszy podciąg zgodny ze wzorcem wyrażenia regularnego w ciągu wejściowym. Aby uzyskać informacje o elementach języka używanych do tworzenia wzorca wyrażeń regularnych, zobacz Język wyrażeń regularnych — szybki przewodnik.
Możesz określić, czy wzorzec wyrażenia regularnego został znaleziony w ciągu wejściowym, sprawdzając wartość właściwości zwracanego Match obiektu Success . Jeśli zostanie znalezione dopasowanie, właściwość zwróconego Match obiektu Value zawiera podciąg, który jest zgodny ze input
wzorcem wyrażenia regularnego. Jeśli nie znaleziono dopasowania, jego wartość to String.Empty.
Ta metoda zwraca pierwszy podciąg, który input
jest zgodny ze wzorcem wyrażenia regularnego. Kolejne dopasowania można pobrać, wielokrotnie wywołując metodę zwracanego Match obiektu Match.NextMatch . Można również pobrać wszystkie dopasowania w pojedynczym wywołaniu metody, wywołując metodę Regex.Matches(String) .
Wyjątek RegexMatchTimeoutException jest zgłaszany, jeśli czas wykonywania zgodnej operacji przekracza interwał limitu czasu określony przez konstruktora Regex.Regex(String, RegexOptions, TimeSpan) . Jeśli nie ustawisz interwału przekroczenia limitu czasu podczas wywoływania konstruktora, wyjątek jest zgłaszany, jeśli operacja przekracza dowolną wartość limitu czasu ustanowioną dla domeny aplikacji, w której Regex jest tworzony obiekt. Jeśli w Regex wywołaniu konstruktora lub we właściwościach domeny aplikacji nie zdefiniowano limitu czasu lub jeśli wartość limitu czasu wynosi Regex.InfiniteMatchTimeout, nie zostanie zgłoszony wyjątek.
Zobacz też
Dotyczy
Match(String, Int32)
Wyszukuje ciąg wejściowy pierwszego wystąpienia wyrażenia regularnego, zaczynając od określonej pozycji początkowej w ciągu.
public:
System::Text::RegularExpressions::Match ^ Match(System::String ^ input, int startat);
public System.Text.RegularExpressions.Match Match (string input, int startat);
member this.Match : string * int -> System.Text.RegularExpressions.Match
Public Function Match (input As String, startat As Integer) As Match
Parametry
- input
- String
Ciąg do wyszukania dopasowania.
- startat
- Int32
Położenie znaku zerowego, na którym ma zostać uruchomione wyszukiwanie.
Zwraca
Obiekt zawierający informacje o dopasowaniu.
Wyjątki
input
to null
.
startat
jest mniejsza niż zero lub większa niż długość obiektu input
.
Wystąpił limit czasu. Aby uzyskać więcej informacji na temat limitów czasu, zobacz sekcję Uwagi.
Uwagi
Metoda Match(String, Int32) zwraca pierwszy podciąg, który pasuje do wzorca wyrażenia regularnego, zaczynając od pozycji znaku lub po startat
pozycji znaku w ciągu wejściowym. Wzorzec wyrażenia regularnego, dla którego Match(String, Int32) metoda wyszukuje, jest definiowana przez wywołanie jednego z Regex konstruktorów klasy. Aby uzyskać informacje o elementach języka używanych do tworzenia wzorca wyrażeń regularnych, zobacz Język wyrażeń regularnych — szybki przewodnik.
Parametr startat
Opcjonalnie możesz określić pozycję początkową w ciągu przy użyciu parametru startat
. Wszystkie dopasowania rozpoczynające się przed startat
ciągiem są ignorowane. Jeśli nie określisz pozycji początkowej, wyszukiwanie zaczyna się od pozycji domyślnej, która jest lewym końcu input
wyszukiwania od lewej do prawej oraz prawym końcu input
w wyszukiwaniu od prawej do lewej. Pomimo rozpoczęcia od startat
, indeks każdego zwróconego dopasowania jest względny do początku ciągu.
Mimo że aparat wyrażeń regularnych nie zwraca żadnego dopasowania rozpoczynającego się przed startat
, nie ignoruje ciągu przed startat
. Oznacza to, że asercji, takich jak kotwice lub asercji lookbehind , nadal mają zastosowanie do danych wejściowych jako całości. Na przykład poniższy kod zawiera wzorzec z asercją lookbehind, która jest spełniona, mimo że występuje przed startat
indeksem 5 w ciągu wejściowym.
using System;
using System.Text.RegularExpressions;
namespace Examples
{
public class Example3
{
public static void Main()
{
string input = "Zip code: 98052";
var regex = new Regex(@"(?<=Zip code: )\d{5}");
Match match = regex.Match(input, 5);
if (match.Success)
Console.WriteLine("Match found: {0}", match.Value);
}
}
}
// This code prints the following output:
// Match found: 98052
Porada
- Jeśli wzorzec zaczyna się od
^
kotwicy, alestartat
jest większy niż 0, żadne dopasowania nigdy nie zostaną znalezione w wyszukiwaniu jednowierszowym, ponieważ są ograniczone^
do rozpoczęcia od indeksu 0. - Kotwica
\G
jest satysfakcjonująca pod adresemstartat
. W związku z tym, jeśli chcesz ograniczyć dopasowanie tak, aby zaczynało się dokładnie w określonym położeniu znaku w ciągu, zakotwiczyć wyrażenie regularne z wartością\G
na lewo dla wzorca od lewej do prawej. Ogranicza to dopasowanie, więc musi zaczynać się dokładnie odstartat
(lub, gdy wymagane jest wiele dopasowań, więc dopasowania są ciągłe).
Wyszukiwania od prawej do lewej
Wyszukiwanie od prawej do lewej, czyli gdy wzorzec wyrażenia regularnego RegexOptions.RightToLeft jest skonstruowany z opcją, zachowuje się w następujący sposób:
- Skanowanie przechodzi w przeciwnym kierunku, a wzorzec jest dopasowany z tyłu (po prawej) do przodu (po lewej).
- Domyślną pozycją początkową jest prawy koniec ciągu wejściowego.
- Jeśli
startat
zostanie określony, skanowanie od prawej do lewej rozpoczyna się od znaku o wartościstartat
- 1 (niestartat
). \G
Gdy kotwica jest określona na prawym końcu wzorca, ogranicza dopasowanie (pierwsze) do końca dokładnie nastartat
- 1.
Aby uzyskać więcej informacji na temat wyszukiwania od prawej do lewej, zobacz Tryb od prawej do lewej.
Określanie, czy znaleziono dopasowanie
Możesz określić, czy wzorzec wyrażenia regularnego został znaleziony w ciągu wejściowym, sprawdzając wartość właściwości zwracanego Match obiektu Success . Jeśli zostanie znalezione dopasowanie, właściwość zwróconego Match obiektu Value zawiera podciąg, który jest zgodny ze input
wzorcem wyrażenia regularnego. Jeśli nie znaleziono dopasowania, jego wartość to String.Empty.
Pierwsze lub wiele dopasowań
Ta metoda zwraca pierwszy podciąg znaleziony w pozycji znaku lub po startat
tym, jak jest zgodny input
ze wzorcem wyrażenia regularnego. Kolejne dopasowania można pobrać, wielokrotnie wywołując metodę zwracanego Match obiektu Match.NextMatch . Można również pobrać wszystkie dopasowania w pojedynczym wywołaniu metody, wywołując metodę Regex.Matches(String, Int32) .
Wyjątki przekroczenia limitu czasu
Wyjątek RegexMatchTimeoutException jest zgłaszany, jeśli czas wykonywania zgodnej operacji przekracza interwał limitu czasu określony przez konstruktora Regex.Regex(String, RegexOptions, TimeSpan) . Jeśli nie ustawisz interwału przekroczenia limitu czasu podczas wywoływania konstruktora, wyjątek jest zgłaszany, jeśli operacja przekracza dowolną wartość limitu czasu ustanowioną dla domeny aplikacji, w której Regex jest tworzony obiekt. Jeśli w Regex wywołaniu konstruktora lub we właściwościach domeny aplikacji nie zdefiniowano limitu czasu lub jeśli wartość limitu czasu wynosi Regex.InfiniteMatchTimeout, nie zostanie zgłoszony wyjątek.
Zobacz też
Dotyczy
Match(String, String)
Wyszukuje określony ciąg wejściowy dla pierwszego wystąpienia określonego wyrażenia regularnego.
public:
static System::Text::RegularExpressions::Match ^ Match(System::String ^ input, System::String ^ pattern);
public static System.Text.RegularExpressions.Match Match (string input, string pattern);
static member Match : string * string -> System.Text.RegularExpressions.Match
Public Shared Function Match (input As String, pattern As String) As Match
Parametry
- input
- String
Ciąg do wyszukania dopasowania.
- pattern
- String
Wzorzec wyrażenia regularnego do dopasowania.
Zwraca
Obiekt zawierający informacje o dopasowaniu.
Wyjątki
Wystąpił błąd analizowania wyrażeń regularnych.
input
lub pattern
to null
.
Wystąpił limit czasu. Aby uzyskać więcej informacji na temat limitów czasu, zobacz sekcję Uwagi.
Przykłady
Poniższy przykład wywołuje metodę Match(String, String) , aby znaleźć pierwsze słowo zawierające co najmniej jeden z
znak, a następnie wywołuje metodę Match.NextMatch w celu znalezienia dodatkowych dopasowań.
using System;
using System.Text.RegularExpressions;
namespace Examples
{
public class Example
{
public static void Main()
{
string input = "ablaze beagle choral dozen elementary fanatic " +
"glaze hunger inept jazz kitchen lemon minus " +
"night optical pizza quiz restoration stamina " +
"train unrest vertical whiz xray yellow zealous";
string pattern = @"\b\w*z+\w*\b";
Match m = Regex.Match(input, pattern);
while (m.Success)
{
Console.WriteLine("'{0}' found at position {1}", m.Value, m.Index);
m = m.NextMatch();
}
}
}
}
// The example displays the following output:
// 'ablaze' found at position 0
// 'dozen' found at position 21
// 'glaze' found at position 46
// 'jazz' found at position 65
// 'pizza' found at position 104
// 'quiz' found at position 110
// 'whiz' found at position 157
// 'zealous' found at position 174
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim input As String = "ablaze beagle choral dozen elementary fanatic " +
"glaze hunger inept jazz kitchen lemon minus " +
"night optical pizza quiz restoration stamina " +
"train unrest vertical whiz xray yellow zealous"
Dim pattern As String = "\b\w*z+\w*\b"
Dim m As Match = Regex.Match(input, pattern)
Do While m.Success
Console.WriteLine("'{0}' found at position {1}", m.Value, m.Index)
m = m.NextMatch()
Loop
End Sub
End Module
' The example displays the following output:
'ablaze' found at position 0
'dozen' found at position 21
'glaze' found at position 46
'jazz' found at position 65
'pizza' found at position 104
'quiz' found at position 110
'whiz' found at position 157
'zealous' found at position 174
Wzorzec \b\w*z+\w*\b
wyrażenia regularnego jest interpretowany, jak pokazano w poniższej tabeli.
Wzorce | Opis |
---|---|
\b |
Rozpoczyna dopasowanie na granicy wyrazu. |
\w* |
Dopasuj zero, co najmniej jeden znak słowa. |
z+ |
Dopasuj z co najmniej jedno wystąpienie znaku. |
\w* |
Dopasuj zero, co najmniej jeden znak słowa. |
\b |
Kończy dopasowanie na granicy wyrazu. |
Uwagi
Metoda Match(String, String) zwraca pierwszy podciąg zgodny ze wzorcem wyrażenia regularnego w ciągu wejściowym. Aby uzyskać informacje o elementach języka używanych do tworzenia wzorca wyrażeń regularnych, zobacz Język wyrażeń regularnych — szybki przewodnik.
Metoda statyczna Match(String, String) jest równoważna konstruowaniu Regex obiektu z określonym wzorcem wyrażenia regularnego i wywoływaniem metody wystąpienia Match(String) . W tym przypadku aparat wyrażeń regularnych buforuje wzorzec wyrażenia regularnego.
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).
Możesz określić, czy wzorzec wyrażenia regularnego został znaleziony w ciągu wejściowym, sprawdzając wartość właściwości zwracanego Match obiektu Success . Jeśli zostanie znalezione dopasowanie, właściwość zwróconego Match obiektu Value zawiera podciąg, który jest zgodny ze input
wzorcem wyrażenia regularnego. Jeśli nie znaleziono dopasowania, jego wartość to String.Empty.
Ta metoda zwraca pierwszy podciąg, który input
jest zgodny ze wzorcem wyrażenia regularnego. Kolejne dopasowania można pobrać, wielokrotnie wywołując metodę zwracanego Match obiektu Match.NextMatch . Można również pobrać wszystkie dopasowania w pojedynczym wywołaniu metody, wywołując metodę Regex.Matches(String, String) .
Wyjątek RegexMatchTimeoutException jest zgłaszany, jeśli czas wykonywania zgodnej operacji przekracza interwał limitu czasu określony dla domeny aplikacji, w której jest wywoływana metoda. Jeśli w właściwościach domeny aplikacji nie zdefiniowano limitu czasu lub jeśli wartość limitu czasu wynosi Regex.InfiniteMatchTimeout, nie zostanie zgłoszony wyjątek.
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 dopasowania wzorca jest Match(String, String), która umożliwia ustawienie interwału limitu czasu.
Zobacz też
Dotyczy
Match(String, Int32, Int32)
Wyszukuje ciąg wejściowy pierwszego wystąpienia wyrażenia regularnego, zaczynając od określonej pozycji początkowej i wyszukując tylko określoną liczbę znaków.
public:
System::Text::RegularExpressions::Match ^ Match(System::String ^ input, int beginning, int length);
public System.Text.RegularExpressions.Match Match (string input, int beginning, int length);
member this.Match : string * int * int -> System.Text.RegularExpressions.Match
Public Function Match (input As String, beginning As Integer, length As Integer) As Match
Parametry
- input
- String
Ciąg do wyszukania dopasowania.
- beginning
- Int32
Pozycja znaku zerowego w ciągu wejściowym definiującym najbardziej lewą pozycję do wyszukania.
- length
- Int32
Liczba znaków w podciągu do uwzględnienia w wyszukiwaniu.
Zwraca
Obiekt zawierający informacje o dopasowaniu.
Wyjątki
input
to null
.
beginning
jest mniejsza niż zero lub większa niż długość obiektu input
.
-lub-
length
jest mniejsza niż zero lub większa niż długość obiektu input
.
-lub-
beginning
+
length
-1
identyfikuje pozycję, która znajduje się poza zakresem input
.
Wystąpił limit czasu. Aby uzyskać więcej informacji na temat limitów czasu, zobacz sekcję Uwagi.
Uwagi
Metoda Match(String, Int32, Int32) zwraca pierwszy podciąg zgodny ze wzorcem wyrażenia regularnego w części ciągu wejściowego. Aby uzyskać informacje o elementach języka używanych do tworzenia wzorca wyrażeń regularnych, zobacz Język wyrażeń regularnych — szybki przewodnik.
Wzorzec wyrażenia regularnego, dla którego Match(String, Int32, 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.
Metoda Match(String, Int32, Int32) wyszukuje część zdefiniowaną input
przez beginning
parametry i length
dla wzorca wyrażenia regularnego. beginning
zawsze definiuje indeks najbardziej lewego znaku do uwzględnienia w wyszukiwaniu i length
definiuje maksymalną liczbę znaków do wyszukania. Razem definiują zakres wyszukiwania. Zachowanie jest dokładnie takie, jak w przypadku, gdy input
element był skutecznie input.Substring(beginning, length)
, z wyjątkiem tego, że indeks dowolnego dopasowania jest liczone względem początku input
. Oznacza to, że wszystkie zakotwiczenia lub asercji o zerowej szerokości na początku lub na końcu wzorca zachowują się tak, jakby nie input
było poza tym zakresem. Na przykład kotwice ^
, \G
, i \A
będą spełnione pod adresem beginning
i $
\z
będą spełnione pod adresem beginning + length - 1
.
Jeśli wyszukiwanie będzie kontynuowane od lewej do prawej (wartość domyślna), aparat wyrażeń regularnych wyszukuje znak w indeksie beginning
do znaku w indeksie beginning + length - 1
. Jeśli aparat wyrażeń regularnych został utworzona za pomocą RegexOptions.RightToLeft opcji , aby wyszukiwanie przebiegało od prawej do lewej, aparat wyrażeń regularnych wyszukuje znak w indeksie beginning + length - 1
do znaku w indeksie beginning
.
Ta metoda zwraca pierwsze dopasowanie znalezione w tym zakresie. Kolejne dopasowania można pobrać, wielokrotnie wywołując metodę zwracanego Match obiektu Match.NextMatch .
Możesz określić, czy wzorzec wyrażenia regularnego został znaleziony w ciągu wejściowym, sprawdzając wartość właściwości zwracanego Match obiektu Success . Jeśli zostanie znalezione dopasowanie, właściwość zwróconego Match obiektu Value zawiera podciąg, który jest zgodny ze input
wzorcem wyrażenia regularnego. Jeśli nie znaleziono dopasowania, jego wartość to String.Empty.
Wyjątek RegexMatchTimeoutException jest zgłaszany, jeśli czas wykonywania zgodnej operacji przekracza interwał limitu czasu określony przez konstruktora Regex.Regex(String, RegexOptions, TimeSpan) . Jeśli nie ustawisz wartości limitu czasu podczas wywoływania konstruktora, wyjątek jest zgłaszany, jeśli operacja przekracza limit czasu dla domeny aplikacji, w której Regex jest tworzony obiekt. Jeśli w Regex wywołaniu konstruktora lub we właściwościach domeny aplikacji nie zdefiniowano limitu czasu lub jeśli wartość limitu czasu wynosi Regex.InfiniteMatchTimeout, nie zostanie zgłoszony wyjątek.
Zobacz też
Dotyczy
Match(String, String, RegexOptions, TimeSpan)
Wyszukuje ciąg wejściowy dla pierwszego wystąpienia określonego wyrażenia regularnego przy użyciu określonych opcji dopasowania i interwału przekroczenia limitu czasu.
public:
static System::Text::RegularExpressions::Match ^ Match(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public static System.Text.RegularExpressions.Match Match (string input, string pattern, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
static member Match : string * string * System.Text.RegularExpressions.RegexOptions * TimeSpan -> System.Text.RegularExpressions.Match
Public Shared Function Match (input As String, pattern As String, options As RegexOptions, matchTimeout As TimeSpan) As Match
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 zapewniają opcje dopasowania.
- matchTimeout
- TimeSpan
Interwał limitu czasu lub InfiniteMatchTimeout wskazujący, że metoda nie powinna upłynął limit czasu.
Zwraca
Obiekt zawierający informacje o dopasowaniu.
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.
Wystąpił limit czasu. Aby uzyskać więcej informacji na temat limitów czasu, zobacz sekcję Uwagi.
Uwagi
Metoda Match(String, String, RegexOptions, TimeSpan) zwraca pierwszy podciąg zgodny ze wzorcem wyrażenia regularnego w ciągu wejściowym. Aby uzyskać informacje o elementach języka używanych do tworzenia wzorca wyrażeń regularnych, zobacz Język wyrażeń regularnych — szybki przewodnik.
Metoda statyczna Match(String, String, RegexOptions, TimeSpan) jest odpowiednikiem konstruowania Regex obiektu za pomocą konstruktora Regex(String, RegexOptions, TimeSpan) i wywoływania metody wystąpienia Match(String) .
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).
Możesz określić, czy wzorzec wyrażenia regularnego został znaleziony w ciągu wejściowym, sprawdzając wartość właściwości zwracanego Match obiektu Success . Jeśli zostanie znalezione dopasowanie, właściwość zwróconego Match obiektu Value zawiera podciąg, który jest zgodny ze input
wzorcem wyrażenia regularnego. Jeśli nie znaleziono dopasowania, jego wartość to String.Empty.
Ta metoda zwraca pierwszy podciąg znaleziony w input
pliku, który jest zgodny ze wzorcem wyrażenia regularnego. Kolejne dopasowania można pobrać, wielokrotnie wywołując metodę zwracanego Match obiektu NextMatch . Można również pobrać wszystkie dopasowania w pojedynczym wywołaniu metody, wywołując metodę Regex.Matches(String, String, RegexOptions) .
Parametr matchTimeout
określa, jak długo metoda dopasowywania wzorca powinna spróbować znaleźć dopasowanie przed upływem limitu czasu. Ustawienie interwału limitu czasu zapobiega wyrażeniom regularnym, które polegają na nadmiernej wycofywaniu, aby przestać odpowiadać podczas przetwarzania danych wejściowych zawierających niemal dopasowania. Aby uzyskać więcej informacji, zobacz Najlepsze rozwiązania dotyczące wyrażeń regularnych i wycofywania. Jeśli w tym interwale czasu nie znaleziono dopasowania, metoda zgłasza RegexMatchTimeoutException wyjątek. matchTimeout
zastępuje dowolną domyślną wartość limitu czasu zdefiniowaną dla domeny aplikacji, w której jest wykonywana metoda.
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.