Używanie wyrażeń regularnych w Visual Studio
Visual Studio używa regularnego wyrażenia .NET Framework, aby odnaleźć i zastąpić tekst.W Visual Studio 2010 i wersjach starszych program Visual Studio używał niestandardowych składni wyrażeń regularnych w oknach Znajdź i Zamień.Ten temat tłumaczy jak konwertować niektóre częściej używane niestandardowe znaki regularnych wyrażeń do wersji .NET.
Porada |
---|
W systemach operacyjnych Windows większość linii kończyć się znakiem "\r\n" (rozpoczęcie nowego wiersza po znaku powrotu karetki).Znaki te nie są widoczne, ale są obecne w edytorze i przekazywane do usługi .NET Regular Expression. |
Aby uzyskać więcej informacji, zobacz .NET Framework — Wyrażenia regularne.
Porada |
---|
Aby uzyskać informacje o wyrażeniach regularnych używanych we wzorcach zastąpień, zobacz Podstawienia w wyrażeniach regularnych.Aby użyć numerowanej grupy uchwyconej, składnia to $1, aby określić numerowaną grupę i (x), aby określić grupę, o którą chodzi:.Na przykład zgrupowane wyrażenie regularne (\d)([a-z]) znajdzie cztery dopasowania w następującym ciągu: 1a 2b 3c 4d.Ciąg zastępujący z$1 konwertuje ciąg na z1 z2 z3 z4> jest równoważny składni w Visual Studio 2010 {:z}([a-z]) dla zgrupowanych wyrażenia regularnego i z\1 dla ciągu zastępującego. |
Comparing .NET Framework wyrażeń regularnych
Możesz konwertować regularne wyrażenia z wersji użytej w poprzedniej wersji Visual Studio na regularne wyrażenia .NET Framework korzystając z poniższej tabeli.
Cel |
Nowy |
Stary |
Nowy przykład |
---|---|---|---|
Pasuje do dowolnego pojedynczego znaku (za wyjątkiem podziału wiersza) |
. |
. |
a.o pasuje "aro" w "around" i "abo" w "about" ale nie "acro" w "across". |
Dopasowuje zero lub więcej wystąpień poprzedniego wyrażenia (dopasowuje tak dużą liczbę znaków, jak to możliwe) |
* |
* |
a*r pasuje "r" w "rack", "ar" w "ark", i "aar" w "aardvark" |
Dopasowuje dowolny znak zero lub więcej razy (Symbol wieloznaczny *) |
.* |
.* |
c.*e pasuje do “cke” w “racket”, “comme” w “comment”, i “code” w “code” |
Dopasowuje jedno lub więcej wystąpień poprzedniego wyrażenia (dopasowuje tak dużą liczbę znaków, jak to możliwe) |
+ |
+ |
e.+e pasuje do "eede" w "feeder"ale nie do "ee". |
Dopasowuje dowolny znak jeden lub więcej razy (Symbol wieloznaczny?) |
.+ |
.+ |
e. + e pasuje do "eede" "podajnika" ale nie "ee". |
Dopasowuje zero lub więcej wystąpień poprzedniego wyrażenia (dopasowuje tak małą liczbę znaków, jak to możliwe) |
*? |
@ |
e.*?e pasuje do "ee" w "feeder" ale nie do "eede". |
Dopasowuje jedno lub więcej wystąpień poprzedniego wyrażenia (dopasowuje tak małą liczbę znaków, jak to możliwe) |
+? |
# |
e.+?e pasuje do "ente" i "erprise" w "enterprise", ale nie do całego słowa "enterprise". |
Zakotwiczenia ciągu dopasowania do początku wiersza lub ciągu |
^ |
^ |
^ samochód pasuje do słowa "samochód" tylko kiedy pojawia się na początku wiersza. |
Zakotwiczenia ciągu dopasowania na końcu wiersza |
\r?$ |
$ |
End\r?$ pasuje do "end" tylko wtedy, gdy pojawia się na końcu wiersza. |
Pasuje do pojedynczego znaku w zestawie |
[abc] |
[abc] |
b[abc] pasuje do "ba", "bb", i "bc". |
Pasuje do dowolnego znaku w ciągu znaków |
[a-f] |
[x-y] |
be[n-t] pasuje do "bet" w "between", "ben" w "beneath", i "bes" w "beside", ale nie "below". |
Przechwytywanie i niejawne numerowanie wyrażenia zawartgoe w nawiasach |
() |
() |
([a-z])X\1 pasuje do "aXa" i "bXb", ale nie "aXb". ". "\1" odnosi się do pierwszej grupy wyrażenie "[a-z]". |
Unieważnienie dopasowania |
(?!abc) |
~(abc) |
real (?!ity) pasuje do członu „real” w słowach „realty” i „really”, ale nie w „reality”. Znajdzie także drugi „prawdziwy” (ale nie pierwszy „prawdziwy”) w „realityreal”. |
Pasuje do dowolnego znaku, który nie jest podany w danym zestawie znaków |
[^abc] |
[^abc] |
być [^ n-t pasuje do "bef" w "przed", "beh" w "za" i "bel" w "poniżej", ale nie "poniżej". |
Dopasowuje wyrażenie przed lub po symbolu. |
| |
| |
(sponge|mud) bath pasuje "sponge bath" i "mud bath." |
Uniknij znaku następującej odwróconej kreski ukośnej |
\ |
\ |
\^ pasuje do znaku ^. |
Określ liczbę wystąpień poprzedzającego znaku lub grupy |
{x},, gdzie x jest liczbą wystąpień |
\x, gdzie x jest liczbą wystąpień |
x(ab){2}x odpowiada "xababx", a x(ab){2,3}x odpowiada "xababx" i "xabababx", ale nie "xababababx". |
Dopasowuje tekst w klasie znaku Unicode, gdzie „X” jest numerem kodu Unicode.Aby uzyskać więcej informacji dotyczących klas znaków Unicode, zobacz |
\p{X} |
:X |
\p{lu} pasuje do "T" i "D" w "Thomas Doe". |
Dopasuj granicę wyrazu |
\b (poza klasą znak \b Określa, do granicy słowa i wewnątrz znak klasy określa backspace). |
< i > określić początek i koniec wyrazu |
\Bin pasuje do "w" w "wewnątrz" ale nie "pinto". |
Dopasowuje koniec linii (czyli znak powrotu karetki, po którym występuje nowy wiersz). |
\r?\n |
\n |
End\r?\nBegin pasuje do "Koniec" i "Początek" tylko wtedy, gdy "Koniec" jest ostatnim ciągiem w wierszu a "Początek" jest pierwszym ciągiem w następnym wierszu. |
Pasuje do dowolnego znaku alfanumerycznego |
\w |
:a |
a\wd pasuje do "add" i "a1d" ale nie do "a d". |
Dopasowuje dowolny biały znak. |
(?([^ \r\n])\s) |
:b |
Publiczny\sInterfejs pasuje do frazy „Interfejs publiczny”. |
Pasuje do dowolnego znaku numerycznego |
\d |
:d |
\d pasuje i "3" w "3456" "2" w 23 "i"1" w "1". |
Dopasuj znak Unicode |
\uXXXX gdzie XXXX określa wartość znaku Unicode. |
\uXXXX gdzie XXXX określa wartość znaku Unicode |
\u0065 pasuje do znaku "e". |
Dopasuj identyfikator |
\b(_\w+|[\w-[0-9_]]\w*)\b |
:i |
Dopasowuje "type1" ale nie &type1" lub "#define". |
Dopasuj ciągi wewnątrz cudzysłowu |
((\".+?\")|('.+?')) |
:q |
Dopasowuje dowolny ciąg w pojedynczym lub podwójnym cudzysłowie. |
Pasuje do liczby szesnastkowej |
\b0[xX]([0-9a-fA-F])\b |
:h |
Dopasowuje „0xc67f”, ale nie „0xc67fc67f”. |
Pasuje do liczb całkowitych i dziesiętnych |
\b[0-9]*\.*[0-9]+\b |
:n |
Dopasowuje „1,333”. |