Regex.Match Metod

Definition

Söker i en indatasträng efter en delsträng som matchar ett mönster för reguljära uttryck och returnerar den första förekomsten som ett enskilt Match objekt.

Överlagringar

Name Description
Match(String)

Söker i den angivna indatasträngen efter den första förekomsten av det reguljära uttryck som anges i Regex konstruktorn.

Match(String, Int32)

Söker i indatasträngen efter den första förekomsten av ett reguljärt uttryck, med början vid den angivna startpositionen i strängen.

Match(String, String)

Söker i den angivna indatasträngen efter den första förekomsten av det angivna reguljära uttrycket.

Match(String, Int32, Int32)

Söker i indatasträngen efter den första förekomsten av ett reguljärt uttryck, med början vid den angivna startpositionen och söker bara efter det angivna antalet tecken.

Match(String, String, RegexOptions)

Söker i indatasträngen efter den första förekomsten av det angivna reguljära uttrycket med hjälp av de angivna matchningsalternativen.

Match(String, String, RegexOptions, TimeSpan)

Söker i indatasträngen efter den första förekomsten av det angivna reguljära uttrycket med hjälp av de angivna matchningsalternativen och tidsgränsintervallet.

Match(String)

Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs

Söker i den angivna indatasträngen efter den första förekomsten av det reguljära uttryck som anges i Regex konstruktorn.

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

Parametrar

input
String

Strängen för att söka efter en matchning.

Returer

Ett objekt som innehåller information om matchningen.

Undantag

input är null.

En timeout inträffade.

Kommentarer

Metoden Match(String) returnerar den första delsträngen som matchar ett mönster för reguljära uttryck i en indatasträng.

Du kan avgöra om det reguljära uttrycksmönstret har hittats i indatasträngen genom att kontrollera det returnerade Match objektets Success egenskap. Om en matchning hittas innehåller det returnerade Match objektets Value egenskap den matchade delsträngen. Om ingen matchning hittas är dess värde Empty.

Den här metoden returnerar den första matchningen. Du kan hämta efterföljande matchningar genom att upprepade gånger anropa det returnerade Match objektets NextMatch() -metod. Du kan också hämta alla matchningar i ett enda metodanrop genom att anropa Matches(String).

Undantaget RegexMatchTimeoutException utlöses om körningstiden för matchningsåtgärden överskrider det tidsgränsintervall som angetts av Regex(String, RegexOptions, TimeSpan) konstruktorn. Om du inte anger ett tidsgränsintervall när du anropar konstruktorn utlöses undantaget om åtgärden överskrider ett timeout-värde som har upprättats för programdomänen Regex där objektet skapas. Om ingen tidsgräns har definierats i konstruktoranropet Regex eller i programdomänens egenskaper, eller om tidsgränsvärdet är InfiniteMatchTimeout, utlöses inget undantag.

Se även

Gäller för

Match(String, Int32)

Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs

Söker i indatasträngen efter den första förekomsten av ett reguljärt uttryck, med början vid den angivna startpositionen i strängen.

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

Parametrar

input
String

Strängen för att söka efter en matchning.

startat
Int32

Den nollbaserade teckenposition där sökningen ska startas.

Returer

Ett objekt som innehåller information om matchningen.

Undantag

input är null.

startat är mindre än noll eller större än längden på input.

En timeout inträffade.

Kommentarer

Metoden Match(String, Int32) returnerar den första delsträngen som matchar ett mönster för reguljära uttryck, med början vid eller efter teckenpositionen startat , i en indatasträng. Det reguljära uttrycksmönster som Match(String, Int32) metoden söker efter definieras av anropet till en av Regex klasskonstruktorerna. Information om språkelementen som används för att skapa ett mönster för reguljära uttryck finns i Språk för reguljära uttryck – snabbreferens.

Parametern startat

Använd parametern startat för att ange teckenpositionen där sökningen startar. I en sökning från vänster till höger ignoreras alla matchningar som börjar tidigare startat i strängen. Börja vid standardpositionen genom att använda överlagringen Match(String) (eller skicka 0 för en sökning från vänster till höger och input.Length för en sökning från höger till vänster). Trots att sökningen startas vid startatär indexet för en returnerad matchning relativt till början av strängen.

Även om motorn för reguljära uttryck inte returnerar någon matchning som börjar före startat, ignorerar den inte strängen före startat. Det innebär att påståenden som fästpunkter eller lookbehind-satser fortfarande gäller för indata som helhet. Följande kod innehåller till exempel ett mönster med ett lookbehind-uttryck som uppfylls, trots att det inträffar före indexet 5 i indatasträngen.

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: {match.Value}");
}

// This code prints the following output:
//
// Match found: 98052

Tip

  • Om ett mönster börjar med ^ fästpunkten är startat större än 0 och det reguljära uttrycket inte använder RegexOptions.Multiline, kommer inga matchningar någonsin att hittas eftersom de begränsas av ^ för att börja vid index 0.
  • Ankaret\G är nöjt på startat. Om du vill begränsa en matchning så att den börjar exakt vid en viss teckenposition i strängen fäster du det reguljära uttrycket med ett \G till vänster för ett mönster från vänster till höger. Detta begränsar matchningen så att den måste börja exakt på startat (eller, när flera matchningar önskas, så att matchningarna är sammanhängande).

Höger-till-vänster-sökningar

En höger-till-vänster-sökning, d.s.a. när mönstret för reguljära uttryck konstrueras med RegexOptions.RightToLeft alternativet, fungerar på följande sätt:

  • Genomsökningen rör sig i motsatt riktning och mönstret matchas från baksida (höger) till framsida (vänster).
  • Standardstartpositionen är den högra änden av indatasträngen.
  • Om startat anges börjar genomsökningen från höger till vänster vid tecknet vid startat - 1 (inte startat).
  • \G När fästpunkten anges i den högra änden av ett mönster begränsar den (första) matchningen till att sluta exakt vid startat - 1.

Mer information om höger-till-vänster-sökningar finns i läget Höger till vänster.

Avgöra om en matchning finns

Du kan avgöra om mönster för reguljära uttryck har hittats i indatasträngen genom att kontrollera värdet för det returnerade Match objektets Success egenskap. Om en matchning hittas innehåller det returnerade Match objektets Value egenskap delsträngen från input som matchar mönstret för reguljära uttryck. Om ingen matchning hittas är dess värde String.Empty.

Första eller flera matchningar

Den här metoden returnerar den första delsträngen som hittas genom att genomsöka input med början vid startat positionen (eller, för höger-till-vänster-sökningar, på startat - 1) som matchar det reguljära uttrycksmönstret. Du kan hämta efterföljande matchningar genom att upprepade gånger anropa det returnerade Match objektets Match.NextMatch -metod. Du kan också hämta alla matchningar i ett enda metodanrop genom att anropa Regex.Matches(String, Int32) metoden.

Tidsgränsundantag

Undantaget RegexMatchTimeoutException utlöses om körningstiden för matchningsåtgärden överskrider det tidsgränsintervall som angetts av Regex.Regex(String, RegexOptions, TimeSpan) konstruktorn. Om du inte anger ett tidsgränsintervall när du anropar konstruktorn utlöses undantaget om åtgärden överskrider ett timeout-värde som har upprättats för programdomänen Regex där objektet skapas. Om ingen tidsgräns har definierats i konstruktoranropet Regex eller i programdomänens egenskaper, eller om tidsgränsvärdet är Regex.InfiniteMatchTimeout, utlöses inget undantag.

Se även

Gäller för

Match(String, String)

Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs

Söker i den angivna indatasträngen efter den första förekomsten av det angivna reguljära uttrycket.

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

Parametrar

input
String

Strängen för att söka efter en matchning.

pattern
String

Det reguljära uttrycksmönster som ska matchas.

Returer

Ett objekt som innehåller information om matchningen.

Undantag

Ett fel uppstod vid parsning av reguljära uttryck.

input eller pattern är null.

En timeout inträffade.

Kommentarer

Den statiska Match(String, String) metoden motsvarar konstruera ett Regex objekt med det angivna mönstret och anropa instansmetoden Match(String) . Motorn för reguljära uttryck cachelagrar mönstret.

Du kan avgöra om det reguljära uttrycksmönstret har hittats i indatasträngen genom att kontrollera det returnerade Match objektets Success egenskap. Om en matchning hittas innehåller det returnerade Match objektets Value egenskap den matchade delsträngen. Om ingen matchning hittas är dess värde Empty.

Du kan hämta efterföljande matchningar genom att upprepade gånger anropa det returnerade Match objektets NextMatch() -metod. Du kan också hämta alla matchningar i ett enda metodanrop genom att anropa Matches(String, String) metoden.

Anteckningar till anropare

Den här metoden överskrider tidsgränsen efter ett intervall som är lika med standardvärdet för timeout för den programdomän där den anropas. Om ett timeout-värde inte har definierats för programdomänen används värdet InfiniteMatchTimeout, som förhindrar att metoden överskrider tidsgränsen. Den rekommenderade statiska metoden för att hämta en mönstermatchning är Match(String, String), vilket gör att du kan ange tidsgränsintervallet.

Se även

Gäller för

Match(String, Int32, Int32)

Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs

Söker i indatasträngen efter den första förekomsten av ett reguljärt uttryck, med början vid den angivna startpositionen och söker bara efter det angivna antalet tecken.

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

Parametrar

input
String

Strängen för att söka efter en matchning.

beginning
Int32

Den nollbaserade teckenpositionen i indatasträngen som definierar den vänstra positionen som ska sökas igenom.

length
Int32

Antalet tecken i understrängen som ska inkluderas i sökningen.

Returer

Ett objekt som innehåller information om matchningen.

Undantag

input är null.

beginning är mindre än noll eller större än längden på input. -or- length är mindre än noll eller större än längden på input. -or- beginning + length - 1 identifierar en position som ligger utanför intervallet inputför .

En timeout inträffade.

Kommentarer

Metoden Match(String, Int32, Int32) söker i den del av input som definierats av parametrarna beginning och length efter mönster för reguljära uttryck. beginning definierar alltid indexet för det vänstra tecknet som ska inkluderas i sökningen och length definierar det maximala antalet tecken som ska sökas. Tillsammans definierar de sökintervallet. Beteendet är exakt som om indata var effektivt input.Substring(beginning, length), förutom att indexet för en matchning räknas i förhållande till början av input. Det innebär att alla fästpunkter eller nollbreddskontroller i början eller slutet av mönstret fungerar som om det inte finns några indata utanför det här intervallet.

Om sökningen fortsätter från vänster till höger (standardvärdet) söker reguljära uttrycksmotorn från tecknet vid indexet beginning till tecknet vid indexet beginning + length - 1. Om motorn för reguljära uttryck instansierades med hjälp RightToLeft av alternativet söker motorn från tecknet vid indexet beginning + length – 1 till tecknet vid indexet beginning.

Den här metoden returnerar den första matchningen som finns inom det här intervallet. Du kan hämta efterföljande matchningar genom att upprepade gånger anropa det returnerade Match objektets NextMatch() -metod.

Se även

Gäller för

Match(String, String, RegexOptions)

Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs

Söker i indatasträngen efter den första förekomsten av det angivna reguljära uttrycket med hjälp av de angivna matchningsalternativen.

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

Parametrar

input
String

Strängen för att söka efter en matchning.

pattern
String

Det reguljära uttrycksmönster som ska matchas.

options
RegexOptions

En bitvis kombination av uppräkningsvärdena som ger alternativ för matchning.

Returer

Ett objekt som innehåller information om matchningen.

Undantag

Ett fel uppstod vid parsning av reguljära uttryck.

input eller pattern är null.

options är inte en giltig bitvis kombination av RegexOptions värden.

En timeout inträffade.

Kommentarer

Den statiska Match(String, String, RegexOptions) metoden motsvarar konstruera ett Regex objekt med Regex(String, RegexOptions) konstruktorn och anropa instansmetoden Match(String) .

Du kan avgöra om det reguljära uttrycksmönstret har hittats i indatasträngen genom att kontrollera det returnerade Match objektets Success egenskap. Du kan hämta efterföljande matchningar genom att upprepade gånger anropa det returnerade Match objektets NextMatch() -metod. Du kan också hämta alla matchningar i ett enda metodanrop genom att anropa Matches(String, String, RegexOptions) metoden.

Anteckningar till anropare

Den här metoden överskrider tidsgränsen efter ett intervall som är lika med standardvärdet för timeout för den programdomän där den anropas. Om ett timeout-värde inte har definierats för programdomänen används värdet InfiniteMatchTimeout, som förhindrar att metoden överskrider tidsgränsen. Den rekommenderade statiska metoden för att hämta en mönstermatchning är Match(String, String), vilket gör att du kan ange tidsgränsintervallet.

Se även

Gäller för

Match(String, String, RegexOptions, TimeSpan)

Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs
Källa:
Regex.Match.cs

Söker i indatasträngen efter den första förekomsten av det angivna reguljära uttrycket med hjälp av de angivna matchningsalternativen och tidsgränsintervallet.

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

Parametrar

input
String

Strängen för att söka efter en matchning.

pattern
String

Det reguljära uttrycksmönster som ska matchas.

options
RegexOptions

En bitvis kombination av uppräkningsvärdena som ger alternativ för matchning.

matchTimeout
TimeSpan

Ett tidsgränsintervall, eller InfiniteMatchTimeout för att indikera att metoden inte bör överskrida tidsgränsen.

Returer

Ett objekt som innehåller information om matchningen.

Undantag

Ett fel uppstod vid parsning av reguljära uttryck.

input eller pattern är null.

options är inte en giltig bitvis kombination av RegexOptions värden. -or- matchTimeout är negativ, noll eller större än cirka 24 dagar.

En timeout inträffade.

Kommentarer

Den statiska Match(String, String, RegexOptions, TimeSpan) metoden motsvarar konstruera ett Regex objekt med Regex(String, RegexOptions, TimeSpan) konstruktorn och anropa instansmetoden Match(String) .

Du kan avgöra om det reguljära uttrycksmönstret har hittats i indatasträngen genom att kontrollera det returnerade Match objektets Success egenskap. Du kan hämta efterföljande matchningar genom att upprepade gånger anropa det returnerade Match objektets NextMatch() -metod.

Parametern matchTimeout anger hur länge en mönstermatchningsmetod ska försöka hitta en matchning innan tidsgränsen uppnås. Om du anger ett tidsgränsintervall förhindras reguljära uttryck som förlitar sig på överdriven bakåtspårning från att verka sluta svara när de bearbetar indata som innehåller nära matchningar. Om ingen matchning hittas i det tidsintervallet utlöser metoden ett RegexMatchTimeoutException undantag. matchTimeout åsidosätter alla standardvärden för timeout som definierats för programdomänen där metoden körs.

Anteckningar till anropare

Vi rekommenderar att du anger parametern matchTimeout till ett lämpligt värde, till exempel två sekunder. Om du inaktiverar tidsgränser genom att ange ger motorn för reguljära InfiniteMatchTimeoututtryck något bättre prestanda. Du bör dock inaktivera tidsgränser endast under följande villkor:

  • När indata som bearbetas av ett reguljärt uttryck härleds från en känd och betrodd källa eller består av statisk text. Detta exkluderar text som har matats in dynamiskt av användare.

  • När mönstret för reguljära uttryck har testats noggrant för att säkerställa att det effektivt hanterar matchningar, icke-matchningar och nära matchningar.

  • När det reguljära uttrycksmönstret inte innehåller några språkelement som är kända för att orsaka överdriven bakåtspårning vid bearbetning av en nära matchning.

Se även

Gäller för