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 Visual Studio .NET-reguláris kifejezéseket a szöveg megkereséséhez és cseréjéhez.
Reguláris kifejezés szintaxisa
Az alábbi táblázat néhány reguláris kifejezési karaktert, operátort, szerkezetet és mintamintát tartalmaz. A teljesebb referenciát a Reguláris kifejezésnyelvcímű témakörben talál.
| Cél | Kifejezés | Példa |
|---|---|---|
| Egyezzen meg bármely egyetlen karakterrel (a sortörés kivételével). További információ: Bármely karakter. | . |
a.o "aro" megegyezik az "around"-ban lévővel és az "abo"-val az "about"-ban, de nem az "acro"-val az "across"-ban |
| Az előző kifejezés nulla vagy több előfordulásának egyezése (a lehető legtöbb karakter egyeztetése). További információ: Nulla vagy több alkalommal egyezik. | * |
a*r megegyezik az „r”-rel a „rack”-ben, az „ar”-rel az „ark”-ban, és az „aar”-ral az „aardvark”-ban. |
| Egyezzen meg egy tetszőleges karakter nullával vagy több alkalommal. | .* |
c.*e a "cke" a "racket", a "comme" a "comment" és a "code" (kód) kifejezésre illeszkedik. |
| Egyezzen az előző kifejezés egy vagy több előfordulásával (a lehető legtöbb karaktert egyezzen meg). További információ: Egyezés egy vagy több előfordulás esetén. | + |
e+d megegyezik az "eed" mintával a "feeder"-ben és az "ed" mintával a "faded" (elhalványult) szóban. |
| Egyező karakter egy vagy több alkalommal. | .+ |
e.+e "eede" egyezést talál a "feeder"-ben, de nem talál egyezést a "feed"-ben |
| Az előző kifejezés nulla vagy több előfordulását illesztjük (a lehető legkevesebb karakterrel). További információ: Nulla vagy több alkalommal (lusta egyezés). | *? |
\w*?d egyezik a "fad" és az "ed" részletekre a "faded" szövegben, de nem az egész "faded" szóra, a lusta egyezés miatt. |
| Egyeztesse az előző kifejezés egy vagy több előfordulását (a lehető legkevesebb karakterrel próbáljon egyezni). További információért lásd: Egyezés egy vagy több alkalommal (halogató egyezés). | +? |
e\w+? egyezést talál az "ee" kifejezésben, mint az "asleep" és az "ed" az "faded", de nem talál egyezést a "fade" kifejezésben. |
| Rögzítse az egyező karaktersort egy sor vagy karaktersor elejéhez | ^ |
^car csak akkor egyezik az "autó" szóval, ha egy sor elején jelenik meg |
| Rögzítse az egyező sztringet egy sor végéhez | \r?$ |
car\r?$ csak akkor egyezik meg az "autóval", ha egy sor végén jelenik meg |
| A találati sztring rögzítése a fájl végéhez | $ |
car$ csak akkor egyezik meg az "autóval", ha az a fájl végén jelenik meg |
| Egy készlet egyetlen karakterének egyeztetése | [abc] |
b[abc] a "ba", a "bb" és a "bc" |
| Karaktertartomány bármely karakterének illesztése | [a-f] |
be[n-t] egyezik a "bet" a "between"-ben, a "ben" a "beneath"-ben és a "bes" a "beside"-ban, de nem talál találatokat a "below"-ban. |
| Zárójelben lévő kifejezés rögzítése és implicit számozása | () | Az ([a-z])X\1 illeszkedik az "aXa" és a "bXb" mintákra, de az "aXb"-re nem. A "\1" az első "[a-z]" kifejezéscsoportra utal. További információ: Csoportok és csereminták rögzítése. |
| Egyezés érvénytelenítése | (?! abc) |
real(?!ity) megegyezik a "realty" és a "really" kifejezésben, de a "valóságban" nem. Azt is megtalálja a második "valós" (de nem az első "valós") a "realityreal". |
| Egyezzen meg minden olyan karakterrel, amely nem szerepel egy adott karakterkészletben. További információ: Negatív karaktercsoport. | [^abc] | A "be[^n-t]" illeszkedik a "before" "bef" részéhez, a "behind" "beh" részéhez és a "below" "bel" részéhez, de nem talál egyezést a "beneath" szóban. |
| Egyeztesse a szimbólum előtti vagy utáni kifejezést | | |
(sponge|mud) bath "szivacsfürdő" és "sárfürdő" egyezik |
| A fordított perjelet követő karakter megkerülése | \ |
\^ a ^ karakterrel egyezik meg |
| Adja meg az előző karakter vagy csoport előfordulásainak számát. További információért lásd: Pontosan n-szer egyezik. | {n}, ahol az "n" az előfordulások száma |
x(ab){2}x egyezik a "xababx" értékkelx(ab){2,3}x megegyezik a "xababx" és a "xabababx", de nem a "xababababx" |
| A Unicode-kategóriaszövegének egyeztetése. További információ a Unicode-karakterosztályokról: Unicode Standard 15.0 Karaktertulajdonságok. | \p{X}, ahol az "X" a Unicode-szám. |
\p{Lu} megfelel a "T" és "D" betűknek a "Thomas Doe" névben |
| Keresd meg a szóhatárt | \b (Egy karakterosztályon kívül \b egy szóhatárt határoz meg, egy karakterosztályon belül pedig \b a háttérteret.) |
\bin egyezést talál az "in" szóelemre a "belső" kifejezésben, de nem talál egyezést a "pinto" szóban. |
| Egy vonaltörés egyeztetése (vagyis egy kocsivisszatér, amelyet egy új sor követ, vagy csak egy új sor) | \r?\n |
End\r?\nBegin csak akkor illeszkedik a "End" és a "Begin" karaktersorozathoz, ha az "End" a sor utolsó sztringje, a "Begin" pedig a következő sor első sztringje. |
| Bármely szó karakterének | \w |
a\wd egyezik az "add" és az "a1d" karakterláncokkal, de nem az "a d"-vel. |
| Nem szójelek egyeztetése | \W |
a\Wd egyezik az "a d"-sel, de nem "és" |
| Egyezzen meg bármilyen szóköz karakterrel | \s |
Public\sInterface a "Nyilvános felület" kifejezésre illeszkedik |
| Egyezés a nem szóköz karakterrel | \S |
\S+ "end", "A11" vagy "end?". |
| Bármely tizedesjegyű karakter | \d |
\d egyezik a "4" és a "0" értékkel a "wd40" kifejezésben |
| Bármely nem számjegyű karakter egyeztetése | \D |
\D a "w" és a "d" egyezés a "wd40" szövegben |
A hexadecimális számnak megfelelő operátorokat és szerkezeteket egyesítő reguláris kifejezés például \b0[xX]([0-9a-fA-F]+)\b. Ez a kifejezés megegyezik a "0xc67f" kifejezéssel, de a "0xc67g" kifejezéssel nem.
Borravaló
Windows operációs rendszerekben a legtöbb sor "\r\n" végződik (egy kocsivissza, amelyet egy új sor követ). Ezek a karakterek nem láthatók, de megtalálhatók a szerkesztőben, és átadva a .NET reguláris kifejezési szolgáltatásnak. Ha webes vagy nem Windows rendszerű operációs rendszerből származó fájlokkal foglalkozik, ügyeljen arra, hogy az új sorokat csak egy sortöréshez használják.
Csoportok és csereminták rögzítése
A rögzítési csoport egy reguláris kifejezés alkifejezését jelöli, és rögzíti a bemeneti sztringek egy részsztringét. A rögzített csoportokat használhatja magában a reguláris kifejezésben (például egy ismétlődő szó kereséséhez), vagy egy helyettesítő mintában. További információ: Csoportosítási szerkezetek reguláris kifejezésekben.
Számozott rögzítési csoport létrehozásához a subexpressziót zárójelekkel kell körülvenni a reguláris kifejezésmintában. A rögzítéseket a rendszer automatikusan megszámozza balról jobbra a reguláris kifejezés nyitó zárójelének pozíciója alapján. A rögzített csoport eléréséhez vegye figyelembe az alábbi példákat:
A reguláris kifejezésen belül: Használja a
\number. A reguláris kifejezésben például\1(\w+)\s\1az első rögzítési csoportra(\w+)hivatkozik.Helyettesítő mintában: Használja a
$number. A csoportosított reguláris kifejezés(\d)([a-z])például két csoportot határoz meg: az első csoport egyetlen tizedesjegyet tartalmaz, a második csoport pedig egyetlen karaktert tartalmaz és zközött. A kifejezés négy egyezést talál a következő sztringben: 1a 2b 3c 4d. A helyettesítő karakterláncz$1csak az első csoportra hivatkozik ($1), és átalakítja a karakterláncot z1 z2 z3 z4.
Az alábbi képen egy reguláris kifejezés (\w+)\s\1 és egy helyettesítő karakterlánc $1látható. A reguláris kifejezés és a csereminta egyaránt hivatkozik az első automatikusan számozott rögzítési csoportra. Ha a Visual Studio Gyors csere párbeszédpaneljén az összes cseréje lehetőséget választja, az ismétlődő szavak eltávolításra kerülnek a szövegből.
Borravaló
A Gyors csere párbeszédpanelen jelölje ki a Reguláris kifejezések használata gombot, vagy nyomja le Alt+Ebillentyűt.
Elnevezett rögzítési csoportok
A rögzítési csoport automatikus számozása helyett nevet adhat neki. Egy elnevezett rögzítési csoport szintaxisa (?<name>subexpression).
Az elnevezett rögzítési csoportok, például a számozott rögzítési csoportok a reguláris kifejezésben vagy egy helyettesítő mintában használhatók. A névvel ellátott rögzítési csoport eléréséhez vegye figyelembe a következő példákat:
A reguláris kifejezésen belül: Használja a
\k<name>. A reguláris kifejezésben\k<repeated>(?<repeated>\w+)\s\k<repeated>például arepeatednevű rögzítési csoportra hivatkozik, amelynek alkifejezése\w+.Helyettesítő mintában: Használja a
${name}. Például${repeated}.
Az alábbi képen egy reguláris kifejezés (?<repeated>\w+)\s\k<repeated> és egy helyettesítő karakterlánc ${repeated}látható. A reguláris kifejezés és a helyettesítő minta egyaránt hivatkozik a repeatednevű rögzítési csoportra. Ha a Visual Studio Gyors csere párbeszédpaneljén az összes cseréje lehetőséget választja, az ismétlődő szavak eltávolításra kerülnek a szövegből.
Borravaló
Jelölje ki a Normál kifejezések használata gombot (vagy nyomja le Alt+E) gombot a Gyorscsere párbeszédpanelen.
A névvel ellátott rögzítési csoportokról további információt Elnevezett egyező alkifejezésekcímű témakörben talál. A helyettesítő mintákban használt reguláris kifejezésekről további információt A reguláris kifejezések helyettesítéseicímű témakörben talál.
Példák
| Minta | Leírás |
|---|---|
int ([_A-Za-z][_A-Za-z0-9]*) |
Egyezik az egy egész szám definícióival. Az azonosítók egy kis- vagy nagybetűvel kezdődnek, amelyet nulla vagy több (*) betű vagy szám követ. A külső zárójelek $1-ként rögzítik az azonosítót. |
(private\|internal\|public)*\s*([\w]+\s+)int\s+([_A-Za-z][_A-Za-z0-9]*)\s+=\s+[+-]+(\d)+ |
Egyezzen a C# egész szám deklarációkkal, amelyek egész számértékekre vannak inicializálva, rögzítve a különböző részeket, beleértve a hozzáférési szintet, a módosítókat (például const vagy static), az azonosítót és a megadott értéket. Vegye figyelembe, hogy a \s+ használata legalább egy szóköznél szükséges, míg a \s* használata megfelelő, ha a szóköz előfordulhat vagy nem. |
foreach\s*\(([\w\d]*)\s+([\w\d]*)\s+in\s+(.*)\) |
Egy foreach hurok nyitóvonalának felel meg. A literális zárójeleket fordított perjellel (\) elkerülik. A különböző csoportokat a rendszer $1, $2és $3 a zárójelek nélkül rögzíti. |
#define\s+([_A-Za-z][_A-Za-z0-9]*) |
Megfelel #define definícióknak (érték nélkül, ha van ilyen). A definiált token $1-ban van tárolva. |
#include\s+["<](.*)[">] |
Egyezés tartalmaz egy C++ forrásfájlban. |