Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A reguláris kifejezés olyan minta, amelyet a reguláris kifejezésmotor a bemeneti szövegben próbál egyeztetni. A minta egy vagy több karakterkonstansból, operátorból vagy szerkezetből áll. Rövid bevezetést a .NET Reguláris kifejezések című témakörben talál.
A rövid útmutató minden szakasza felsorolja a karakterek, operátorok és szerkezetek egy adott kategóriáját, amellyel reguláris kifejezéseket definiálhat.
Ezt az információt két formátumban is rendelkezésre bocsátottuk, amelyek könnyen letölthetők és nyomtathatók:
Karaktermenekülések
A normál kifejezésben a fordított perjel karakter (\) azt jelzi, hogy az azt követő karakter vagy speciális karakter (ahogy az a következő táblázatban is látható), vagy szó szerint kell értelmezni. További információ: Karaktermenekülések.
| Szökött karakter | Leírás | Minta | Egyezik |
|---|---|---|---|
\a |
Megfelel a \u0007 nevű harang karakternek. | \a |
"\u0007" a(z) "Error!" + '\u0007' rendszerben |
\b |
Egy karakterosztályban egy \u0008 nevű háttértérrel egyezik. | [\b]{3,} |
"\b\b\b\b" a(z) "\b\b\b\b" rendszerben |
\t |
Egy \u0009 lapnak felel meg. | (\w+)\t |
"item1\t", in "item2\t""item1\titem2\t" |
\r |
Megegyezik a \u000D kocsivisszaval. (\r nem egyenértékű az új vonal karakterével, \n.) |
\r\n(\w+) |
"\r\nThese" a(z) "\r\nThese are\ntwo lines." rendszerben |
\v |
Megfelel a \u000B függőleges lapnak. | [\v]{2,} |
"\v\v\v" a(z) "\v\v\v" rendszerben |
\f |
Megfelel egy \u000C nevű űrlapcsatornának. | [\f]{2,} |
"\f\f\f" a(z) "\f\f\f" rendszerben |
\n |
Egy új sort (\u000A) ad meg. | \r\n(\w+) |
"\r\nThese" a(z) "\r\nThese are\ntwo lines." rendszerben |
\e |
Megegyezik a \u001B feloldójelével. | \e |
"\x001B" a(z) "\x001B" rendszerben |
\nnn |
Oktális ábrázolás használatával határoz meg egy karaktert (az nnn két vagy három számjegyből áll). | \w\040\w |
"a b", in "c d""a bc d" |
\xnn |
Hexadecimális ábrázolás használatával határoz meg egy karaktert (az nn pontosan két számjegyből áll). | \w\x20\w |
"a b", in "c d""a bc d" |
\cX\cx |
Megegyezik az X vagy x által megadott ASCII vezérlő karakterével, ahol az X vagy x a vezérlő karakter betűje. | \cC |
"\x0003" in "\x0003" (Ctrl-C) |
\unnnn |
Egy Unicode-karaktert hexadecimális ábrázolással (pontosan négy számjegy, az nnnn által ábrázolt módon) egyezik meg. | \w\u0020\w |
"a b", in "c d""a bc d" |
\ |
Ha olyan karaktert követ, amely nem ismerhető fel szökött karakterként ebben a témakörben és a jelen témakör többi táblázatában, akkor az megegyezik ezzel a karakterrel. Például ugyanaz, \* mint \x2Aa , és \. ugyanaz, mint \x2E. Ez lehetővé teszi, hogy a reguláris kifejezésmotor egyértelműsítse a nyelvi elemeket (például * vagy ?) és a karakterkonstansokat (amelyeket vagy \?azokat \* jelöl). |
\d+[\+-x\*]\d+ |
"2+2" és "3*9", itt: "(2+2) * 3*9" |
Karakterosztályok
A karakterosztály egyezik a karakterkészletek bármelyikével. A karakterosztályok az alábbi táblázatban felsorolt nyelvi elemeket tartalmazzák. További információ: Karakterosztályok.
| Karakterosztály | Leírás | Minta | Egyezik |
|---|---|---|---|
[ character_group ] |
Egyezik a character_group bármelyik karakterét. Alapértelmezés szerint az egyezés megkülönbözteti a kis- és nagybetűk értékét. | [ae] |
"a" a(z) "gray" rendszerben"a", in "e""lane" |
[^ character_group ] |
Tagadás: Egyezik a character_group nem szereplő egyetlen karakterel. Alapértelmezés szerint a character_group karakterei megkülönböztetik a kis- és nagybetűket. | [^aei] |
"r", , "g""n""reign" |
[első - utolsó ] |
Karaktertartomány: Egyezik az elsőtől az utolsóig terjedő tartomány egyetlen karakterével. | [A-Z] |
"A", in "B""AB123" |
. |
Helyettesítő karakter: Egyetlen karaktert ad meg, kivéve \n.Ha egy literál pont karaktert (. vagy \u002E) szeretne egyezni, akkor azt a feloldó karakterrel (\.) kell megelőznie. |
a.e |
"ave" a(z) "nave" rendszerben"ate" a(z) "water" rendszerben |
\p{név } |
A Unicode általános kategóriájában vagy a név alapján megadott elnevezett blokkban szereplő egyetlen karakternek felel meg. | \p{Lu}\p{IsCyrillic} |
"C", in "L""City Lights""Д", in "Ж""ДЖem" |
\P{név } |
Megfelel minden olyan karakternek, amely nem szerepel a Unicode általános kategóriájában vagy a név szerint megadott elnevezett blokkban. | \P{Lu}\P{IsCyrillic} |
"i", , "t""y""City""e", in "m""ДЖem" |
\w |
Bármely szó karakterének megfelel. | \w |
"I", "D", "A", "1"in "3""ID A1.3" |
\W |
Egyezik a szó nélküli karaktert. | \W |
" ", in ".""ID A1.3" |
\s |
Egyezik bármely szóköz karakterrel. | \w\s |
"D " a(z) "ID A1.3" rendszerben |
\S |
Egyezik a szóközzel nem rendelkező karakterrel. | \s\S |
" _" a(z) "int __ctr" rendszerben |
\d |
Bármely tizedesjegynek megfelel. | \d |
"4" a(z) "4 = IV" rendszerben |
\D |
A tizedesjegyen kívüli karaktereket is megfelelteti. | \D |
" ", "=", " ", "I"in "V""4 = IV" |
Horgonyok
A horgonyok vagy az atomi nullaszélességű állítások a sztring aktuális helyzetétől függően sikeres vagy sikertelen egyezést okoznak, de nem okozzák, hogy a motor végiglépkedjen a sztringen, vagy használjon karaktereket. Az alábbi táblázatban szereplő metacharacterek horgonyok. További információ: Horgonyok.
| Állítás | Leírás | Minta | Egyezik |
|---|---|---|---|
^ |
Alapértelmezés szerint az egyezésnek a sztring elején kell kezdődnie; többsoros módban a sor elején kell kezdődnie. | ^\d{3} |
"901" a(z) "901-333-" rendszerben |
$ |
Alapértelmezés szerint az egyezésnek a sztring végén vagy \n a sztring végén kell történnie; többsoros módban a sor vége vagy a sor vége előtt \n kell történnie. |
-\d{3}$ |
"-333" a(z) "-901-333" rendszerben |
\A |
Az egyezésnek a sztring elején kell történnie. | \A\d{3} |
"901" a(z) "901-333-" rendszerben |
\Z |
Az egyezésnek a sztring végén vagy a sztring végén kell \n történnie. |
-\d{3}\Z |
"-333" a(z) "-901-333" rendszerben |
\z |
Az egyezésnek a sztring végén kell történnie. | -\d{3}\z |
"-333" a(z) "-901-333" rendszerben |
\G |
Az egyezésnek azon a ponton kell történnie, ahol az előző találat véget ért, vagy ha nem volt korábbi egyezés, abban a sztringben, ahol az egyeztetés elkezdődött. | \G\(\d\) |
"(1)", , "(3)""(5)""(1)(3)(5)[7](9)" |
\b |
Az egyezésnek egy \w (alfanumerikus) és egy \W (nonalphanumerikus) karakter közötti határon kell történnie. |
\b\w+\s\w+\b |
"them theme", in "them them""them theme them them" |
\B |
Az egyezés nem történhet határvonalon \b . |
\Bend\w*\b |
"ends", in "ender""end sends endure lender" |
Szerkezetek csoportosítása
A csoportosítási szerkezetek egy reguláris kifejezés alexpresszióit, és általában egy bemeneti sztring részsztringjeinek rögzítését rögzítik. A csoportosítási szerkezetek tartalmazzák az alábbi táblázatban felsorolt nyelvi elemeket. További információ: Csoportosítási szerkezetek.
| Csoportosítási szerkezet | Leírás | Minta | Egyezik |
|---|---|---|---|
(subexpression ) |
Rögzíti a megfeleltetett altartományt, és egy egy-alapú sorszámot rendel hozzá. | (\w)\1 |
"ee" a(z) "deep" rendszerben |
(?<név > subexpression )vagy (?'név ' subexpression ) |
A egyeztetett alexpressziót egy elnevezett csoportba rögzíti. | (?<double>\w)\k<double> |
"ee" a(z) "deep" rendszerben |
(?<név1 - név2 > subexpression ) vagy (?'név1 - név2 ' subexpression ) |
Kiegyensúlyozó csoport definícióját határozza meg. További információt a Csoportosítási szerkezetek "Kiegyensúlyozási csoportdefiníció" című szakaszában talál. | (((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$ |
"((1-3)*(3-1))" a(z) "3+2^((1-3)*(3-1))" rendszerben |
(?:subexpression ) |
Nem össze nem foglalható csoportot határoz meg. | Write(?:Line)? |
"WriteLine" a(z) "Console.WriteLine()" rendszerben"Write" a(z) "Console.Write(value)" rendszerben |
(?imnsx-imnsx:subexpression ) |
Alkalmazza vagy letiltja a megadott beállításokat a subexpressionon belül. További információ: Reguláris kifejezés beállításai. | A\d{2}(?i:\w+)\b |
"A12xl", in "A12XL""A12xl A12XL a12xl" |
(?=subexpression ) |
Nulla szélességű pozitív lookahead-állítás. | \b\w+\b(?=.+and.+) |
"cats", "dogs"in "cats, dogs and some mice." |
(?!subexpression ) |
Nulla szélességű negatív lookahead-állítás. | \b\w+\b(?!.+and.+) |
"and", , "some""mice"in "cats, dogs and some mice." |
(?<=subexpression ) |
Nulla szélességű pozitív lookbehind helyesség. | \b\w+\b(?<=.+and.+)——————————— \b\w+\b(?<=.+and.*) |
"some", "mice"in "cats, dogs and some mice."———————————— "and", , "some""mice"in "cats, dogs and some mice." |
(?<!subexpression ) |
Nulla szélességű negatív lookbehind helyesség. | \b\w+\b(?<!.+and.+)——————————— \b\w+\b(?<!.+and.*) |
"cats", , "dogs""and"in "cats, dogs and some mice."———————————— "cats", "dogs"in "cats, dogs and some mice." |
(?>subexpression ) |
Atomi csoport. | '(?>a|ab)c | "ac" ban"ac"nincs benne semmi "abc" |
Megoldások egy pillantással
Amikor a reguláris kifejezésmotor megkeresi a keresett kifejezést, az aktuális pozíciótól az eredeti sztring elejéig (lookbehind) vagy végéig (lookahead) ér el egy sztringet, majd a keresési minta használatával futtatja Regex.IsMatch az adott alsztringet. A szubexpresszió eredményének sikerességét ezután az határozza meg, hogy pozitív vagy negatív állításról van-e szó.
| Megoldás | Név | Függvény |
|---|---|---|
(?=check) |
Pozitív lookahead | Azt állítja, hogy a sztring aktuális pozícióját azonnal követő "ellenőrzés" |
(?<=check) |
Pozitív lookbehind | Azt állítja, hogy a sztring aktuális pozícióját közvetlenül megelőző "ellenőrzés" |
(?!check) |
Negatív lookahead | Azt állítja, hogy a sztring aktuális pozícióját közvetlenül követő érték nem "ellenőrzés" |
(?<!check) |
Negatív lookbehind | Azt állítja, hogy ami közvetlenül a sztring aktuális pozícióját megelőzi, az nem "ellenőrzés" |
A megfeleltetés után az atomi csoportok nem lesznek újra kiértékelve, még akkor sem, ha a minta fennmaradó része az egyezés miatt meghiúsul. Ez jelentősen javíthatja a teljesítményt, ha a kvantátorok az atomi csoportban vagy a minta fennmaradó részében fordulnak elő.
Kvantitátorok
A kvantáló megadja, hogy az előző elem (amely lehet egy karakter, egy csoport vagy egy karakterosztály) hány példánya legyen jelen a bemeneti sztringben egyezés bekövetkezéséhez. A kvantátorok az alábbi táblázatban felsorolt nyelvi elemeket tartalmazzák. További információ: Kvantitátorok.
| Quantifier | Leírás | Minta | Egyezik |
|---|---|---|---|
* |
Megegyezik az előző elem nullával vagy több alkalommal. | a.*c |
"abcbc" a(z) "abcbc" rendszerben |
+ |
Egy vagy több alkalommal megfelel az előző elemnek. | "be+" |
"bee" in "been", "be" in "bent" |
? |
Megegyezik az előző elem nullával vagy egyszer. | "rai?" |
"rai" a(z) "rain" rendszerben |
{n } |
Pontosan n-szer egyezik az előző elemével. | ",\d{3}" |
",043" be "1,043.6", ",876", ",543"és ",210" be "9,876,543,210" |
{n ,} |
Az előző elemnek legalább n-szer felel meg. | "\d{2,}" |
"166", , "29""1930" |
{n , m } |
Az előző elemet legalább n-szer , de legfeljebb m alkalommal egyezteti meg. | "\d{3,5}" |
"166", "17668""19302" a(z) "193024" rendszerben |
*? |
Az előző elem nulla vagy több alkalommal, de a lehető legkevesebb alkalommal felel meg. | a.*?c |
"abc" a(z) "abcbc" rendszerben |
+? |
Egy vagy több alkalommal, de a lehető legkevesebb alkalommal felel meg az előző elemnek. | "be+?" |
"be" in "been", "be" in "bent" |
?? |
Megegyezik az előző elem nullával vagy egyszer, de a lehető legkevesebb alkalommal. | "rai??" |
"ra" a(z) "rain" rendszerben |
{n }? |
Pontosan n-szer egyezik meg az előző elemet. | ",\d{3}?" |
",043" be "1,043.6", ",876", ",543"és ",210" be "9,876,543,210" |
{n ,}? |
Az előző elemet legalább n alkalommal, de a lehető legkevesebb alkalommal egyezteti meg. | "\d{2,}?" |
"166", , "29""1930" |
{n , m }? |
Megfelel az előző elemnek n és m között, de a lehető legkevesebb alkalommal. | "\d{3,5}?" |
"166", "17668""193", in "024""193024" |
Háttérszerkezetek
A visszalépés lehetővé teszi, hogy a korábban egyeztetett alexpressziók később azonos reguláris kifejezésben azonosíthatók legyenek. Az alábbi táblázat a .NET-ben lévő reguláris kifejezések által támogatott háttérbeli szerkezeteket sorolja fel. További információ: Backreference Constructs.
| Háttérrendszer felépítése | Leírás | Minta | Egyezik |
|---|---|---|---|
\szám |
Visszalépés. Egy számozott alexpresszió értékét adja meg. | (\w)\1 |
"ee" a(z) "seek" rendszerben |
\k<név > |
Elnevezett háttérrendszer. Megegyezik egy elnevezett kifejezés értékével. | (?<char>\w)\k<char> |
"ee" a(z) "seek" rendszerben |
Alternation Constructs
Az alternation szerkezetek módosítanak egy reguláris kifejezést, hogy engedélyezhessék vagy egyeztethessék azokat. Ezek a szerkezetek tartalmazzák az alábbi táblázatban felsorolt nyelvi elemeket. További információ: Alternation Constructs.
| Alternation construct | Leírás | Minta | Egyezik |
|---|---|---|---|
| |
Megfelel a függőleges sáv (|) karakter által elválasztott bármely elemnek. |
th(e|is|at) |
"the", in "this""this is the day." |
(?(kifejezés ) igen | Nem )vagy (?(kifejezés ) igen ) |
Igennel egyezik, ha a kifejezés által kijelölt reguláris kifejezésminta megegyezik; ellenkező esetben a nem kötelező résznek felel meg. a kifejezés nulla szélességű állításként van értelmezve. Ha elnevezett vagy számozott rögzítési csoporttal szeretné elkerülni a kétértelműséget, használhat explicit állítást, például a következőt: (?( (?=kifejezés ) ) igen | Nem ) |
(?(A)A\d{2}\b|\b\d{3}\b) |
"A10", in "910""A10 C103 910" |
(?(név ) igen | Nem )vagy (?(név ) igen ) |
Igennel egyezik, ha egy név, egy elnevezett vagy számozott rögzítési csoport megegyezik; ellenkező esetben a nem kötelező nem. | (?<quoted>")?(?(quoted).+?"|\S+\s) |
"Dogs.jpg ", in "\"Yiska playing.jpg\"""Dogs.jpg \"Yiska playing.jpg\"" |
Helyettesítések
A helyettesítések olyan reguláris kifejezésnyelvi elemek, amelyeket a helyettesítő minták támogatnak. További információ: Helyettesítések. Az alábbi táblázatban felsorolt metacharacterek atomi nullaszélességű állítások.
| Karakter | Leírás | Minta | Csereminta | Bemeneti sztring | Eredménysztring |
|---|---|---|---|---|---|
$szám |
A csoportszám alapján egyeztetett részszűrést helyettesíti. | \b(\w+)(\s)(\w+)\b |
$3$2$1 |
"one two" |
"two one" |
${név } |
A névvel ellátott csoportnévvel egyező részszűrést helyettesíti. | \b(?<word1>\w+)(\s)(?<word2>\w+)\b |
${word2} ${word1} |
"one two" |
"two one" |
$$ |
A "$" literál helyébe lép. | \b(\d+)\s?USD |
$$$1 |
"103 USD" |
"$103" |
$& |
A teljes egyezés másolatát helyettesíti. | \$?\d*\.?\d+ |
**$&** |
"$1.30" |
"**$1.30**" |
$` |
A beviteli sztring összes szövegének helyettesítése az egyezés előtt. | B+ |
$` |
"AABBCC" |
"AAAACC" |
$' |
Az egyezés után a bemeneti sztring összes szövegét lecseréli. | B+ |
$' |
"AABBCC" |
"AACCCC" |
$+ |
Az utolsó rögzített csoportot helyettesíti. | B+(C+) |
$+ |
"AABBCCDD" |
"AACCDD" |
$_ |
A teljes bemeneti sztringet helyettesíti. | B+ |
$_ |
"AABBCC" |
"AAAABBCCCC" |
Reguláris kifejezés beállításai
Megadhatja azokat a beállításokat, amelyek szabályozzák, hogy a reguláris kifejezésmotor hogyan értelmezi a reguláris kifejezésmintát. Ezen lehetőségek közül számos megadható beágyazott (a reguláris kifejezési mintában) vagy egy vagy több RegexOptions állandóként. Ez a rövid útmutató csak a beágyazott beállításokat sorolja fel. A beágyazott szöveggel és RegexOptions a beállításokkal kapcsolatos további információkért tekintse meg a Reguláris kifejezés beállításai című cikket.
A beágyazott beállításokat kétféleképpen adhatja meg:
- A vegyes szerkezettel
(?imnsx-imnsx), ahol egy beállítás vagy beállításkészlet előtt egy mínuszjel (-) kikapcsolja ezeket a beállításokat. Bekapcsolhatja például a(?i-mn)kis- és nagybetűk megkülönböztethetetlen egyezését (i), kikapcsolhatja a többsoros módot (m) és kikapcsolhatja a névtelen csoportrögzítéseket (n). A beállítás a reguláris kifejezési mintára vonatkozik attól a ponttól kezdve, ahol a beállítás meg van határozva, és a minta végéig vagy arra a pontra érvényes, ahol egy másik szerkezet megfordítja a beállítást. - A csoportosítási szerkezet
(?imnsx-imnsx:alexpressziójának)használatával, amely csak a megadott csoport beállításait határozza meg.
A .NET reguláris kifejezésmotor a következő beágyazott beállításokat támogatja:
| Lehetőség | Leírás | Minta | Egyezik |
|---|---|---|---|
i |
Használjon kis- és nagybetűket nem érzékelyítő egyezést. | \b(?i)a(?-i)a\w+\b |
"aardvark", in "aaaAuto""aardvark AAAuto aaaAuto Adam breakfast" |
m |
Használjon többsoros módot. ^ és $ egy sor elejével és végének felel meg a sztring kezdete és vége helyett. |
Példa: "Többsoros mód" szakasz a Reguláris kifejezés beállításaiban. | |
n |
Ne rögzítsen névtelen csoportokat. | Példa: "Explicit Captures Only" (Csak explicit rögzítések) szakasz a Reguláris kifejezés beállításaiban. | |
s |
Használjon egysoros módot. | Példa: "Egysoros mód" szakasz a Reguláris kifejezés beállításaiban. | |
x |
A normál kifejezésmintában hagyja figyelmen kívül a nem kibontott szóközt. | \b(?x) \d+ \s \w+ |
"1 aardvark", in "2 cats""1 aardvark 2 cats IV centurions" |
Egyéb szerkezetek
A különböző szerkezetek vagy módosítanak egy reguláris kifejezésmintát, vagy információt adnak róla. Az alábbi táblázat a .NET által támogatott egyéb szerkezeteket sorolja fel. További információ: Vegyes szerkezetek.
| Épít | Definíció | Példa |
|---|---|---|
(?imnsx-imnsx) |
Beállítja vagy letiltja az olyan beállításokat, mint a kis- és nagybetűk érzéketlensége a minta közepén. További információ: Reguláris kifejezés beállításai. | \bA(?i)b\w+\begyezések "ABA", "Able""ABA Able Act" |
(?#megjegyzés ) |
Beágyazott megjegyzés. A megjegyzés az első záró zárójelben fejeződik be. | \bA(?#Matches words starting with A)\w+\b |
# [a sor végéig] |
X módú megjegyzés. A megjegyzés egy lezáratlan # időpontban kezdődik, és a sor végéig tart. |
(?x)\bA\w+\b#Matches words starting with A |