Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Wyrażenie regularne to wzorzec, który aparat wyrażeń regularnych próbuje dopasować w tekście wejściowym. Wzorzec składa się z co najmniej jednego literału znakowego, operatora lub konstrukcji. Aby zapoznać się z krótkim wprowadzeniem, zobacz Wyrażenia regularne platformy .NET.
Każda sekcja w tej krótkiej dokumentacji zawiera określoną kategorię znaków, operatorów i konstrukcji, których można użyć do definiowania wyrażeń regularnych.
Udostępniliśmy również te informacje w dwóch formatach, które można pobrać i wydrukować w celu łatwego dokumentacji:
Znaki unikowe
Znak ukośnika odwrotnego (\) w wyrażeniu regularnym wskazuje, że znak, który następuje po nim, jest znakiem specjalnym (jak pokazano w poniższej tabeli) lub powinien być interpretowany dosłownie. Aby uzyskać więcej informacji, zobacz Znaki ucieczki.
Znak poprzedzony znakiem ucieczki | opis | Wzorzec | Dopasowania |
---|---|---|---|
\a |
Dopasowuje znak sygnału dźwiękowego, \u0007. | \a |
"\u0007" w systemie "Error!" + '\u0007' |
\b |
W klasie znaków dopasowuje znak backspace, \u0008. | [\b]{3,} |
"\b\b\b\b" w systemie "\b\b\b\b" |
\t |
Dopasowuje znak tabulatora, \u0009. | (\w+)\t |
"item1\t" , "item2\t" w "item1\titem2\t" |
\r |
Dopasowuje znak powrotu karetki, \u000D (\r nie jest odpowiednikiem znaku nowego wiersza, \n .) |
\r\n(\w+) |
"\r\nThese" w systemie "\r\nThese are\ntwo lines." |
\v |
Dopasowuje tabulator pionowy, \u000B. | [\v]{2,} |
"\v\v\v" w systemie "\v\v\v" |
\f |
Dopasowuje znak wysuwu strony, \u000C. | [\f]{2,} |
"\f\f\f" w systemie "\f\f\f" |
\n |
Dopasowuje znak nowego wiersza, \u000A. | \r\n(\w+) |
"\r\nThese" w systemie "\r\nThese are\ntwo lines." |
\e |
Dopasowuje znak escape, \u001B. | \e |
"\x001B" w systemie "\x001B" |
\ nnn |
Używa reprezentacji ósemkowej do określenia znaku (nnn składa się z dwóch lub trzech cyfr). | \w\040\w |
"a b" , "c d" w "a bc d" |
\x nn |
Używa reprezentacji szesnastkowej do określenia znaku (nn składa się z dokładnie dwóch cyfr). | \w\x20\w |
"a b" , "c d" w "a bc d" |
\c X\c x |
Pasuje do znaku kontrolki ASCII określonego przez znak X lub x, gdzie X lub x jest literą znaku kontrolki. | \cC |
"\x0003" in "\x0003" (Ctrl-C) |
\u nnnn |
Dopasuje znak Unicode przy użyciu reprezentacji szesnastkowej (dokładnie cztery cyfry, reprezentowane przez nnnn). | \w\u0020\w |
"a b" , "c d" w "a bc d" |
\ |
Kiedy następuje po nim znak, który nie jest rozpoznawany jako znak ucieczki w tej lub innej tabeli zawartej w tym temacie, dopasowuje ten znak. Na przykład \* jest taka sama jak , i \. jest taka sama jak \x2A \x2E . Dzięki temu aparat wyrażeń regularnych może uściślać elementy języka (takie jak * lub ?) i literały znaków (reprezentowane przez \* lub \? ). |
\d+[\+-x\*]\d+ |
"2+2" i "3*9" w elemencie "(2+2) * 3*9" |
Klasy znaku
Klasa znaków dopasowuje dowolny zestaw znaków. Klasy znaków obejmują elementy języka wymienione w poniższej tabeli. Aby uzyskać więcej informacji, zobacz Klasy znaków.
Klasa znaków | opis | Wzorzec | Dopasowania |
---|---|---|---|
[ character_group ] |
Pasuje do dowolnego pojedynczego znaku w character_group. Domyślnie w dopasowaniu jest uwzględniana wielkość liter. | [ae] |
"a" w systemie "gray" "a" , "e" w "lane" |
[^ character_group ] |
Negacja: dopasuje dowolny pojedynczy znak, który nie znajduje się w character_group. Domyślnie znaki w character_group są uwzględniane wielkości liter. | [^aei] |
"r" , , "g" "n" in"reign" |
[ pierwszy - ostatni ] |
Zakres znaków: pasuje do dowolnego pojedynczego znaku w zakresie od pierwszego do ostatniego. | [A-Z] |
"A" , "B" w "AB123" |
. |
Symbol wieloznaczny: pasuje do dowolnego pojedynczego znaku z wyjątkiem \n .Aby dopasować znak kropki literału (. lub \u002E ), należy poprzedzić go znakiem ucieczki (\. ). |
a.e |
"ave" w systemie "nave" "ate" w systemie "water" |
\p{ nazwa } |
Pasuje do dowolnego pojedynczego znaku w kategorii ogólnej Unicode lub nazwanego bloku określonego przez nazwę. | \p{Lu} \p{IsCyrillic} |
"C" , "L" w "City Lights" "Д" , "Ж" w "ДЖem" |
\P{ nazwa } |
Dopasuje dowolny pojedynczy znak, który nie znajduje się w kategorii ogólnej Unicode lub nazwany blok określony przez nazwę. | \P{Lu} \P{IsCyrillic} |
"i" , , "t" "y" in"City" "e" , "m" w "ДЖem" |
\w |
Pasuje do dowolnego znaku wyrazu. | \w |
"I" , , "D" , "1" "A" , "3" w"ID A1.3" |
\W |
Pasuje do dowolnego znaku innego niż wyraz. | \W |
" " , "." w "ID A1.3" |
\s |
Pasuje do dowolnego znaku odstępu. | \w\s |
"D " w systemie "ID A1.3" |
\S |
Pasuje do dowolnego znaku innego niż odstęp. | \s\S |
" _" w systemie "int __ctr" |
\d |
Dopasuje dowolną cyfrę dziesiętną. | \d |
"4" w systemie "4 = IV" |
\D |
Pasuje do dowolnego znaku innego niż cyfra dziesiętna. | \D |
" " , , "=" , "I" " " , "V" w"4 = IV" |
Kotwice
Kotwice (niepodzielne asercje o zerowej szerokości) powodują, że sukces lub niepowodzenie dopasowywania jest zależne od bieżącej pozycji w ciągu, ale nie powodują, że aparat przechodzi do dalszej części ciągu lub używa znaków. Metaznaki wymienione w poniższej tabeli są kotwicami. Aby uzyskać więcej informacji, zobacz Kotwice.
Asercja | opis | Wzorzec | Dopasowania |
---|---|---|---|
^ |
Domyślnie dopasowanie musi rozpoczynać się na początku ciągu; w trybie wielowierszowym musi zaczynać się od początku wiersza. | ^\d{3} |
"901" w systemie "901-333-" |
$ |
Domyślnie dopasowanie musi występować na końcu ciągu lub przed \n końcem ciągu; w trybie wielowierszowym musi nastąpić przed końcem wiersza lub przed \n końcem wiersza. |
-\d{3}$ |
"-333" w systemie "-901-333" |
\A |
Dopasowanie musi wystąpić na początku ciągu. | \A\d{3} |
"901" w systemie "901-333-" |
\Z |
Dopasowanie musi wystąpić na końcu ciągu lub przed \n na końcu ciągu. |
-\d{3}\Z |
"-333" w systemie "-901-333" |
\z |
Dopasowanie musi wystąpić na końcu ciągu. | -\d{3}\z |
"-333" w systemie "-901-333" |
\G |
Dopasowanie musi wystąpić w punkcie, w którym zakończyło się poprzednie dopasowanie lub jeśli nie było poprzedniego dopasowania, na pozycji w ciągu, w którym rozpoczęto dopasowywanie. | \G\(\d\) |
"(1)" , , "(3)" "(5)" in"(1)(3)(5)[7](9)" |
\b |
Dopasowanie musi występować na granicy między znakiem \w (alfanumerycznym) i znakiem \W (niefanumerycznym). |
\b\w+\s\w+\b |
"them theme" , "them them" w "them theme them them" |
\B |
Dopasowanie nie może występować na \b granicy. |
\Bend\w*\b |
"ends" , "ender" w "end sends endure lender" |
Konstrukty grupujące
Konstrukcje grupujące wyznaczają podwyrażenia wyrażeń regularnych i często przechwytywane podciągi ciągu wejściowego. Konstrukcje grupowania obejmują elementy języka wymienione w poniższej tabeli. Aby uzyskać więcej informacji, zobacz Grouping Constructs (Konstrukcje grupowania).
Konstrukcja grupująca | opis | Wzorzec | Dopasowania |
---|---|---|---|
( Subexpression ) |
Przechwytuje dopasowane podwyrażenia i przypisuje mu liczbę porządkową (liczone od zera). | (\w)\1 |
"ee" w systemie "deep" |
(?< nazwa > Subexpression ) lub (?' nazwa ' Subexpression ) |
Przechwytuje dopasowane podwyrażenie do nazwanej grupy. | (?<double>\w)\k<double> |
"ee" w systemie "deep" |
(?< name1 - name2 > Subexpression ) lub (?' name1 - name2 ' Subexpression ) |
Określa definicję grupy równoważącej. Aby uzyskać więcej informacji, zobacz sekcję "Równoważenie definicji grupy" w temacie Konstrukcje grupowania. | (((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$ |
"((1-3)*(3-1))" w systemie "3+2^((1-3)*(3-1))" |
(?: Subexpression ) |
Definiuje nieprzechwytywaną grupę. | Write(?:Line)? |
"WriteLine" w systemie "Console.WriteLine()" "Write" w systemie "Console.Write(value)" |
(?imnsx-imnsx: Subexpression ) |
Stosuje lub wyłącza określone opcje w podrażeniu. Aby uzyskać więcej informacji, zobacz Opcje wyrażeń regularnych. | A\d{2}(?i:\w+)\b |
"A12xl" , "A12XL" w "A12xl A12XL a12xl" |
(?= Subexpression ) |
Pozytywna asercja wyprzedzająca o zerowej szerokości. | \b\w+\b(?=.+and.+) |
"cats" , "dogs" w "cats, dogs and some mice." |
(?! Subexpression ) |
Negatywna asercja wyprzedzająca o zerowej szerokości. | \b\w+\b(?!.+and.+) |
"and" , , "some" "mice" w "cats, dogs and some mice." |
(?<= Subexpression ) |
Pozytywna asercja wsteczna o zerowej szerokości. | \b\w+\b(?<=.+and.+) ——————————— \b\w+\b(?<=.+and.*) |
"some" , "mice" w "cats, dogs and some mice." ———————————— "and" , , "some" "mice" w "cats, dogs and some mice." |
(?<! Subexpression ) |
Negatywna asercja wsteczna o zerowej szerokości. | \b\w+\b(?<!.+and.+) ——————————— \b\w+\b(?<!.+and.*) |
"cats" , , "dogs" "and" w "cats, dogs and some mice." ———————————— "cats" , "dogs" w "cats, dogs and some mice." |
(?> Subexpression ) |
Grupa niepodzielna. | '(?>a|ab)c | "ac" w"ac" nic w "abc" |
Spojrzenie na pierwszy rzut oka
Gdy aparat wyrażeń regularnych osiąga wyrażenie lookaround, pobiera podciąg z bieżącej pozycji do początku (lookbehind) lub koniec (lookahead) oryginalnego ciągu, a następnie uruchamia Regex.IsMatch na tym podciągu przy użyciu wzorca lookaround. Sukces wyniku tego podwyrażenia jest następnie określany przez to, czy jest to asercja dodatnia, czy negatywna.
Lookaround | Nazwisko | Funkcja |
---|---|---|
(?=check) |
Pozytywne spojrzenie | Potwierdza, że to, co natychmiast następuje po bieżącym położeniu w ciągu, to "check" |
(?<=check) |
Dodatnia funkcja Lookbehind | Potwierdza, że to, co bezpośrednio poprzedza bieżącą pozycję w ciągu, to "check" |
(?!check) |
Negatywne spojrzenie | Potwierdza, że to, co natychmiast następuje po bieżącym położeniu w ciągu, nie jest "check" |
(?<!check) |
Negatywna wartość lookbehind | Potwierdza, że to, co bezpośrednio poprzedza bieżącą pozycję w ciągu, nie jest "check" |
Po dopasowaniu grupy niepodzielne nie zostaną ponownie ocenione, nawet jeśli pozostała część wzorca zakończy się niepowodzeniem z powodu dopasowania. Może to znacznie poprawić wydajność, gdy kwantyfikatory występują w grupie niepodzielnej lub w pozostałej części wzorca.
Kwantyfikatory
Kwantyfikator określa, ile wystąpień poprzedniego elementu (którym może być znak, grupa lub klasa znaków) musi znajdować się w ciągu wejściowym, aby wystąpiło dopasowanie. Kwantyfikatory obejmują elementy języka wymienione w poniższej tabeli. Aby uzyskać więcej informacji, zobacz Kwantyfikatory.
Kwantyfikator | opis | Wzorzec | Dopasowania |
---|---|---|---|
* |
Dopasowuje poprzedni element zero lub większą liczbę razy. | a.*c |
"abcbc" w systemie "abcbc" |
+ |
Dopasowuje poprzedni element co najmniej raz. | "be+" |
"bee" in , "be" in "been" "bent" |
? |
Dopasowuje poprzedni element zero lub jeden raz. | "rai?" |
"rai" w systemie "rain" |
{ n } |
Pasuje do poprzedniego elementu dokładnie n razy. | ",\d{3}" |
",043" w "1,043.6" systemach , ",876" , ",543" i ",210" w "9,876,543,210" |
{ n ,} |
Pasuje do poprzedniego elementu co najmniej n razy. | "\d{2,}" |
"166" , , "29" "1930" |
{ n , m } |
Pasuje do poprzedniego elementu co najmniej n razy, ale nie więcej niż m razy. | "\d{3,5}" |
"166" , "17668" "19302" w systemie "193024" |
*? |
Dopasowuje poprzedni element zero lub większą liczbę razy (przy czym ta liczba jest jak najmniejsza). | a.*?c |
"abc" w systemie "abcbc" |
+? |
Dopasowuje poprzedni element raz lub większą liczbę razy (przy czym ta liczba jest jak najmniejsza). | "be+?" |
"be" in , "be" in "been" "bent" |
?? |
Dopasowuje poprzedni element zero lub jeden raz (przy czym liczba dopasowań jest jak najmniejsza). | "rai??" |
"ra" w systemie "rain" |
{ n }? |
Pasuje do poprzedniego elementu dokładnie n razy. | ",\d{3}?" |
",043" w "1,043.6" systemach , ",876" , ",543" i ",210" w "9,876,543,210" |
{ n ,}? |
Pasuje do poprzedniego elementu co najmniej n razy, ale jak najmniej raz. | "\d{2,}?" |
"166" , , "29" "1930" |
{ n , m }? |
Pasuje do poprzedniego elementu między n i m razy, ale jak najmniej. | "\d{3,5}?" |
"166" , "17668" "193" , "024" w "193024" |
Konstrukty grupowania wstecznego
Dopasowywanie wsteczne umożliwia kolejne identyfikacje uprzednio dopasowanego podwyrażenia w tym samym wyrażeniu regularnym. W poniższej tabeli wymieniono konstrukcje wnioskowania wstecznego obsługiwane przez wyrażenia regularne na platformie .NET. Aby uzyskać więcej informacji, zobacz Backreference Constructs (Konstrukcje wsteczne).
Konstrukcja dopasowywania wstecznego | opis | Wzorzec | Dopasowania |
---|---|---|---|
\ numer |
Dopasowanie wsteczne. Dopasowuje wartość numerowanego podwyrażenia. | (\w)\1 |
"ee" w systemie "seek" |
\k< nazwa > |
Nazwane dopasowanie wsteczne. Dopasowuje wartość nazwanego wyrażenia. | (?<char>\w)\k<char> |
"ee" w systemie "seek" |
Konstrukty naprzemienne
Konstrukcje zmiany modyfikują wyrażenie regularne, aby umożliwić dopasowanie typu albo/albo. Te konstrukcje obejmują elementy języka wyszczególnione w poniższej tabeli. Aby uzyskać więcej informacji, zobacz Konstrukcje zmiany.
Konstrukcje zmiany | opis | Wzorzec | Dopasowania |
---|---|---|---|
| |
Pasuje do dowolnego elementu oddzielonego znakiem pionowego paska (| ). |
th(e|is|at) |
"the" , "this" w "this is the day." |
(?( wyrażenie ) tak | Nie ) lub (?( wyrażenie ) tak ) |
Pasuje do wartości Tak, jeśli wzorzec wyrażenia regularnego wyznaczony przez wyrażenie jest zgodny; w przeciwnym razie pasuje do opcjonalnej części bez. Wyrażenie jest interpretowane jako asercji o zerowej szerokości. Aby uniknąć niejednoznaczności z nazwaną lub numerowaną grupą przechwytywania, możesz opcjonalnie użyć jawnej asercji, w następujący sposób: (?( (?= wyrażenie ) ) tak | Nie ) |
(?(A)A\d{2}\b|\b\d{3}\b) |
"A10" , "910" w "A10 C103 910" |
(?( nazwa ) tak | Nie ) lub (?( nazwa ) tak ) |
Pasuje tak , jeśli nazwa, nazwa lub numerowana grupa przechwytywania, ma dopasowanie; w przeciwnym razie pasuje do opcjonalnego nie. | (?<quoted>")?(?(quoted).+?"|\S+\s) |
"Dogs.jpg " , "\"Yiska playing.jpg\"" w "Dogs.jpg \"Yiska playing.jpg\"" |
Zastępstwa
Podstawienia są elementami języka wyrażeń regularnych, które są obsługiwane we wzorcach zamieniania. Aby uzyskać więcej informacji, zobacz Podstawianie. Metaznaki wymienione w poniższej tabeli są niepodzielnymi asercjami o zerowej szerokości.
Znak | opis | Wzorzec | Wzorzec zamieniania | Ciąg wejściowy | Ciąg wynikowy |
---|---|---|---|---|---|
$ numer |
Zastępuje podciąg zgodny z numerem grupy. | \b(\w+)(\s)(\w+)\b |
$3$2$1 |
"one two" |
"two one" |
${ nazwa } |
Zastępuje podciąg zgodny z nazwaną nazwą grupy. | \b(?<word1>\w+)(\s)(?<word2>\w+)\b |
${word2} ${word1} |
"one two" |
"two one" |
$$ |
Podstawia literał „$”. | \b(\d+)\s?USD |
$$$1 |
"103 USD" |
"$103" |
$& |
Podstawia kopię całego dopasowania. | \$?\d*\.?\d+ |
**$&** |
"$1.30" |
"**$1.30**" |
$` |
Podstawia cały tekst ciągu wejściowego przed dopasowaniem. | B+ |
$` |
"AABBCC" |
"AAAACC" |
$' |
Podstawia cały tekst ciągu wejściowego po dopasowaniu. | B+ |
$' |
"AABBCC" |
"AACCCC" |
$+ |
Podstawia ostatnią przechwyconą grupę. | B+(C+) |
$+ |
"AABBCCDD" |
"AACCDD" |
$_ |
Podstawia cały ciąg wejściowy. | B+ |
$_ |
"AABBCC" |
"AAAABBCCCC" |
Opcje wyrażeń regularnych
Można określić opcje sterujące sposobem, w jaki aparat wyrażeń regularnych interpretuje wzorzec wyrażenia regularnego. Wiele z tych opcji można określić w tekście (we wzorcu wyrażenia regularnego) lub jako jedną lub więcej RegexOptions stałych. W tym krótkim opisie wymieniono tylko opcje określane w tekście. Aby uzyskać więcej informacji na temat wbudowanych i RegexOptions opcji, zobacz artykuł Opcje wyrażeń regularnych.
Opcję określaną w tekście można określić na dwa sposoby:
- Przy użyciu innej konstrukcji
(?imnsx-imnsx)
, gdzie znak minus (-) przed opcją lub zestaw opcji wyłącza te opcje. Na przykład włącza(?i-mn)
dopasowywanie bez uwzględniania wielkości liter (i
), włącza tryb wielowierszowy (m
) i wyłącza funkcję przechwytywania nienazwanych grup (n
). Ta opcja jest stosowana do wzorca wyrażenia regularnego od czasu zdefiniowania opcji i działa do końca wzorca lub punktu, w którym inna konstrukcja odwróci działanie opcji. - Przy użyciu podexpressionu
)
konstrukcji(?imnsx-imnsx:
grupowania, który definiuje opcje tylko dla określonej grupy.
Aparat wyrażeń regularnych platformy .NET obsługuje następujące opcje wbudowane:
Opcja | Opis | Wzorzec | Dopasowania |
---|---|---|---|
i |
Używa dopasowywania bez uwzględniania wielkości liter. | \b(?i)a(?-i)a\w+\b |
"aardvark" , "aaaAuto" w "aardvark AAAuto aaaAuto Adam breakfast" |
m |
Używa trybu wielowierszowego. ^ i $ dopasuj początek i koniec wiersza zamiast początku i końca ciągu. |
Aby zapoznać się z przykładem, zobacz sekcję "Tryb wielowierszowy" w obszarze Opcje wyrażeń regularnych. | |
n |
Nie przechwytuje nienazwanych grup. | Aby zapoznać się z przykładem, zobacz sekcję "Jawne przechwytywanie tylko" w opcjach wyrażeń regularnych. | |
s |
Używa trybu jednowierszowego. | Aby zapoznać się z przykładem, zobacz sekcję "Tryb jednowierszowy" w obszarze Opcje wyrażeń regularnych. | |
x |
Ignoruje niepoprzedzony znakiem ucieczki znak odstępu we wzorcu wyrażenia regularnego. | \b(?x) \d+ \s \w+ |
"1 aardvark" , "2 cats" w "1 aardvark 2 cats IV centurions" |
Różne konstruktory
Konstrukcje inne służą do modyfikowania wzorca wyrażenia regularnego lub dostarczania informacji na jego temat. W poniższej tabeli wymieniono różne konstrukcje obsługiwane przez platformę .NET. Aby uzyskać więcej informacji, zobacz Różne konstrukcje.
Konstrukcja | Definicja | Przykład |
---|---|---|
(?imnsx-imnsx) |
Ustawia lub wyłącza opcje, takie jak bez uwzględniania wielkości liter w środku wzorca. Aby uzyskać więcej informacji, zobacz Opcje wyrażeń regularnych. | \bA(?i)b\w+\b pasuje "ABA" do elementu , "Able" w "ABA Able Act" |
(?# komentarz ) |
Komentarz w tekście. Komentarz kończy się przy pierwszym nawiasie zamykającym. | \bA(?#Matches words starting with A)\w+\b |
# [do końca wiersza] |
Komentarz trybu X. Komentarz zaczyna się od niewyobrażanego # i nadal na końcu linii. |
(?x)\bA\w+\b#Matches words starting with A |