Používání regulárních výrazů v sadě Visual Studio
Visual Studio použije regulární výrazy rozhraní .NET Framework k hledání a nahrazení textu.V aplikaci Visual Studio 2010 a starších verzích využívala aplikace Visual Studio v okně Najít a nahradit vlastní syntaxi regulárního výrazu.Toto téma vysvětluje, jak převést některé častěji používané vlastní symboly regulárních výrazů ve verzích .NET.
Tip
V operačních systémech Windows většina řádků končí parametrem „\r\n“ (zalomení řádku a nový řádek).Tyto znaky se nezobrazí, ale jsou k dispozici v editoru a jsou předány službě regulárních výrazů rozhraní .NET.
Další informace naleznete v tématu .NET Framework – regulární výrazy.
Tip
Informace o formátování regulárních výrazů, které se používají ve vzorcích pro nahrazení v Nahrazení v regulárních výrazech.Chcete-li použít číslovanou zachycenou skupinu, syntaxe je $1 k určení číslované skupiny a (x) k určení dotazované skupiny:.Například seskupený regulární výraz (\d)([a-z]) najde čtyři shody v následujícím řetězci: 1a 2b 3c 4d.Náhradní řetězec z$1 převede tento řetězec na z1 z2 z3 z4> Ekvivalentní syntax v sadě Visual Studio 2010 je {:z}([a-z]) pro seskupený regulární výraz a z\1 pro náhradní řetězec.
Porovnávání regulárních výrazů rozhraní .NET Framework
Regulární výrazy můžete převést z verze používané v předchozích verzích aplikace Visual Studio na regulární výrazy pro rozhraní .NET Framework pomocí následující tabulky.
Účel |
Nový |
Starý |
Nový příklad |
---|---|---|---|
Odpovídá libovolnému jednomu znaku (kromě zalomení řádku) |
. |
. |
a.o odpovídá „aro“ ve slově „around“ a „abo“ ve slově „about“, ale ne „acro“ ve slově „across“. |
Odpovídá žádnému nebo více výskytům předcházejícího výrazu (odpovídá co nejvíce znakům) |
* |
* |
a*r odpovídá „r“ ve slově „rack“, „ar“ ve slově „ark“ a „aar“ ve slově „aardvark“ |
Odpovídá jakémukoli znaku opakujícím se nula nebo vícekrát (zástupný znak *) |
.* |
.* |
c.*e odpovídá "cke" ve slově "racket", "comme" ve slově "comment" a "code" ve slově "code" |
Odpovídá jednomu nebo více výskytům předcházejícího výrazu (odpovídá co nejvíce znakům) |
+ |
+ |
e.+e odpovídá "eede" ve slově "feeder", ale ne "ee". |
Odpovídá jakémukoli znaku opakujícím se jednou nebo vícekrát (zástupný znak ?) |
.+ |
.+ |
e. + e odpovídá "eede" v "feeder" ale ne "ee". |
Odpovídá žádnému nebo více výskytům předcházejícího výrazu (odpovídá co nejméně znakům) |
*? |
@ |
e.*?e odpovídá "ee" ve slově "feeder", ale ne "eede". |
Odpovídá jednomu nebo více výskytům předcházejícího výrazu (odpovídá co nejméně znakům) |
+? |
# |
e.+?e odpovídá "ente" a "erprise" ve slově "enterprise", ale ne celému slovu "enterprise". |
Ukotvení řetězce shody na začátek řádku nebo řetězce |
^ |
^ |
^car odpovídá slovu „car“ pouze, pokud se nachází na začátku řádku. |
Ukotvení řetězce shody na konec řádku |
\r?$ |
$ |
End\r?$ odpovídá "end" pouze pokud je zobrazeno na konci řádku. |
Odpovídá libovolnému jednomu znaku v sadě |
[abc] |
[abc] |
b[abc] odpovídá „ba“, „bb“ a „bc“. |
Odpovídá libovolnému znaku v zadaném rozsahu znaků |
[a-f] |
[x-y] |
be[n-t] odpovídá „bet“ ve slově „between“, „ben“ ve slově „beneath“ a „bes“ ve slově „beside“, avšak ne slovu „below“. |
Zachytit a implicitně očíslovat výraz v závorkách |
() |
() |
([a-z])X\1 se shoduje s „aXa“ a „bXb“, ale nikoli „aXb“. ". „\1“ se vztahuje k první skupině výrazů „[a-z]“. |
Znehodnotit shodu |
(?!abc) |
~(abc) |
real (?!ity) vyhledá text „real“ ve slově „realty“ a „really“, ale ne „reality“. Najde také druhý výraz „real“ (nikoli však první „real“) v „realityreal“. |
Odpovídá libovolnému znaku, který není v dané sadě znaků |
[^abc] |
[^abc] |
be[^n-t] odpovídá „bef“ ve slově „before“, „beh“ ve slově „behind“ a „bel“ ve slově „below“, avšak ne slovu „beneath“. |
Odpovídá výrazu před nebo jednomu za symbolem. |
| |
| |
(relaxační|bahenní) koupel odpovídá výrazům „relaxační koupel“ a „bahenní koupel“. |
Řídicí sekvence pro znak následující po zpětném lomítku |
\ |
\ |
\^ odpovídá znaku ^. |
Určení počtu výskytů předchozího znaku nebo skupiny |
{x}, kde x je počet výskytů |
\x, kde x je počet výskytů |
x(AB){2}x odpovídá „xababx“ a x(ab){2,3}x odpovídá „xababx“ a „xabababx“ ale ne „xababababx“. |
Odpovídá textu ve třídě znaků Unicode, kde „X“ je číslo sady Unicode.Další informace o třídách znaků Unicode naleznete v tématu |
\p{X} |
:X |
\p{Lu} odpovídá „T“ a „D“ v „Thomas Doe“. |
Porovnat hranici slova |
\b (Mimo třídu znaků určuje \b hranici slova a uvnitř třídy znaků určuje znak backspace). |
< a > ukazují na začátek a konec slova |
\bin odpovídá „in“ v „inside“ ale ne „pinto“. |
Odpovídá konci řádku (tj. zalomení řádku a nový řádek). |
\r?\n |
\n |
End\r?\nBegin odpovídá "End" a "Begin" pouze, pokud je "End" posledním řetězcem v řádku a "Begin" je první řetězec v následujícím řádku. |
Odpovídá libovolnému alfanumerickému znaku |
\w |
:a |
a\wd odpovídá „add“ a „a1d“, avšak ne „a d“. |
Odpovídá jakémukoli prázdnému znaku. |
(?([^\r\n])\s) |
:b |
Public\sInterface odpovídá slovnímu spojení „Veřejné rozhraní“. |
Odpovídá libovolné číslici |
\d |
:d |
\d odpovídá „3“ v „3456“, „2“ ve „23“ a „1“ v „1“. |
Porovnat znak Unicode |
\uXXXX kde XXXX určuje hodnotu znaku Unicode. |
\uXXXX kde XXXX určuje hodnotu znaku Unicode |
\u0065 odpovídá znaku „e“. |
Odpovídá identifikátoru |
\b(_\w+|[\w-[0-9_]]\w*)\b |
:i |
Odpovídá "type1" ale ne &type1" nebo "#define". |
Odpovídá řetězci v uvozovkách |
((\".+?\")|('.+?')) |
:q |
Odpovídá jakémukoli řetězci v jednoduchých nebo dvojitých uvozovkách. |
Odpovídá číslici v šestnáctkové soustavě |
\b0[xX]([0-9a-fA-F])\b |
:h |
Odpovídá „0xc67f“, ale ne „0xc67fc67f“. |
Odpovídá celým nebo desetinným číslům |
\b[0-9]*\.*[0-9]+\b |
:n |
Odpovídá "1.333". |