Visual Studio'da normal ifadeleri kullanma

Visual Studio, metni bulmak ve değiştirmek için .NET normal ifadeleri kullanır.

Normal ifade söz dizimi

Aşağıdaki tabloda bazı normal ifade karakterleri, işleçler, yapılar ve desen örnekleri yer alır. Daha eksiksiz bir başvuru için bkz . Normal ifade dili.

Purpose Expression Örnek
Herhangi bir tek karakteri (satır sonu dışında) eşleştirin. Daha fazla bilgi için bkz . Herhangi bir karakter. . a.o "around" içinde "aro" ve "about" içinde "abo" ile eşleşir ancak "çapraz" içinde "acro" ile eşleşmez
Önceki ifadenin sıfır veya daha fazla örneğini eşleştirin (mümkün olduğunca çok karakter eşleştirin). Daha fazla bilgi için bkz . Sıfır veya daha fazla kez eşleştirme. * a*r "raf"ta "r", "ark" içinde "ar" ve "aardvark" içinde "aar" ile eşleşir
Herhangi bir karakteri sıfır veya daha fazla kez eşleştirin. .* c.*e "raket"te "cke", "comment" içinde "comme" ve "code" içinde "code" ile eşleşir
Önceki ifadenin bir veya daha fazla örneğini eşleştirin (mümkün olduğunca çok karakter eşleştirin). Daha fazla bilgi için bkz . Bir veya daha fazla kez eşleştirme. + e+d "besleyici" içindeki "eed" ve "soluk" içinde "ed" ile eşleşir
Herhangi bir karakteri bir veya daha fazla kez eşleştirin. .+ e.+e "besleyici" içindeki "eede" ile eşleşir ancak "akış" içinde eşleşme bulunmaz
Önceki ifadenin sıfır veya daha fazla örneğini eşleştirin (mümkün olduğunca az karakter eşleştirin). Daha fazla bilgi için bkz. Sıfır veya daha fazla kez eşleştirme (gecikmeli eşleşme). *? \w*?d "soluk" sözcüğünde "soluk" ve "ed" ile eşleşir, ancak gecikmeli eşleşme nedeniyle "soluk" sözcüğünün tamamıyla eşleşmez
Önceki ifadenin bir veya daha fazla örneğini eşleştirin (mümkün olduğunca az karakter eşleştirin). Daha fazla bilgi için bkz. Bir veya daha fazla kez eşleştirme (gecikmeli eşleşme). +? e\w+? "faded" içinde "ee" ve "ed" ile eşleşir ancak "fade" içinde eşleşme bulunmaz
Eşleştirme dizesini bir çizginin veya dizenin başına bağlama ^ ^car yalnızca bir satırın başında göründüğünde "araba" sözcüğüyle eşleşir
Eşleştirme dizesini satırın sonuna bağlama \r?$ car\r?$ yalnızca satırın sonunda göründüğünde "araba" ile eşleşir
Eşleştirme dizesini dosyanın sonuna bağlama $ car$ yalnızca dosyanın sonunda göründüğünde "araba" ile eşleşir
Kümedeki herhangi bir tek karakteri eşleştirme [abc] b[abc] "ba", "bb" ve "bc" ile eşleşir
Karakter aralığındaki herhangi bir karakteri eşleştirme [a-f] be[n-t] "between" içinde "bet", "below" içinde "ben" ve "beside" içinde "bes" ile eşleşir, ancak "aşağıdaki" içinde eşleşme bulmaz
Parantez içinde yer alan ifadeyi yakalama ve örtük olarak numaralandırma () ([a-z])X\1 "aXa" ve "bXb" ile eşleşir, ancak "aXb" ile eşleşmez. "\1", "[a-z]" ilk ifade grubuna başvurur. Daha fazla bilgi için bkz . Grupları ve değiştirme desenlerini yakalama.
Eşleşmeyi geçersiz kılma (?! abc) real(?!ity) "realty" ve "really" içindeki "gerçek" ile eşleşir, ancak "gerçeklikte" eşleşmez. Ayrıca "realityreal" içinde ikinci "gerçek" değerini (ancak ilk "gerçek" değil) bulur.
Belirli bir karakter kümesinde olmayan herhangi bir karakteri eşleştirin. Daha fazla bilgi için bkz . Negatif karakter grubu. [^abc] be[^n-t] "önce" içinde "bef", "behind" içinde "beh" ve "below" içinde "bel" ile eşleşir, ancak "below" içinde eşleşme bulunmaz
Önceki ifadeyi veya simgeden sonraki ifadeyi eşleştirme | (sponge|mud) bath "sünger banyosu" ve "çamur banyosu" ile eşleşir
Ters eğik çizgiden sonraki karakterden kaçış \ \^ ^ karakteriyle eşleşir
Önceki karakterin veya grubun yineleme sayısını belirtin. Daha fazla bilgi için bkz . Tam olarak n kez eşleştirme. {n}, burada 'n' yineleme sayısıdır x(ab){2}x "xababx" ile eşleşir
x(ab){2,3}x "xababx" ve "xabababx" ile eşleşir ancak "xababababx" ile eşleşmiyor
Unicode kategorisindeki metni eşleştirin. Unicode karakter sınıfları hakkında daha fazla bilgi için bkz . Unicode Standart 15.0 Karakter Özellikleri. \p{X}, burada "X" Unicode sayıdır. \p{Lu} "Thomas Doe" içindeki "T" ve "D" ile eşleşir
Sözcük sınırını eşleştirme \b (Karakter sınıfı \b dışında bir sözcük sınırı, karakter sınıfının \b içinde ise bir geri al alanı belirtir.) \bin "inside" içinde "in" ile eşleşir ancak "pinto" içinde eşleşme bulunmaz
Satır sonunu eşleştirme (yani, satır başı ve ardından yeni bir satır veya yalnızca yeni satır) \r?\n End\r?\nBegin yalnızca "End" bir satırdaki son dize ve "Begin" bir sonraki satırdaki ilk dize olduğunda "End" ve "Begin" ile eşleşir
Herhangi bir sözcük karakterini eşleştir \w a\wd "add" ve "a1d" ile eşleşir ancak "a d" ile eşleşmiyor
Herhangi bir boşluk karakterini eşleştir \s Public\sInterface "Ortak Arabirim" tümceciğiyle eşleşir
Herhangi bir ondalık basamak karakterini eşleştir \d \d "wd40" içindeki "4" ve "0" ile eşleşir

Bazı işleçleri ve yapıları onaltılık bir sayıyla eşleşecek şekilde birleştiren örnek normal ifade: \b0[xX]([0-9a-fA-F]+)\b. Bu ifade "0xc67f" ile eşleşir ancak "0xc67g" ile eşleşmez.

İpucu

Windows işletim sistemlerinde çoğu satır "\r\n" ile biter (satır başı ve ardından yeni bir satır). Bu karakterler görünür değildir, ancak düzenleyicide bulunur ve .NET normal ifade hizmetine geçirilir. Web'den veya Windows dışı bir işletim sisteminden dosyalarla ilgilenirken, yeni satırı yalnızca satır sonu için kullanma olasılığını hesaba eklediğinizden emin olun.

Grupları ve değiştirme desenlerini yakalama

Yakalama grubu, normal ifadenin alt ifadesini belirler ve giriş dizesinin alt dizesini yakalar. Yakalanan grupları normal ifadenin içinde (örneğin, yinelenen bir sözcüğü aramak için) veya bir değiştirme düzeninde kullanabilirsiniz. Ayrıntılı bilgi için bkz . Normal ifadelerdeki yapıları gruplandırma.

Numaralandırılmış yakalama grubu oluşturmak için alt ifadeyi normal ifade desenindeki parantezlerle çevreler. Yakalamalar, normal ifadedeki açma parantezinin konumuna göre soldan sağa otomatik olarak numaralandırılır. Yakalanan gruba erişmek için aşağıdaki örnekleri göz önünde bulundurun:

  • Normal ifade içinde: kullanın \number. Örneğin, \1 normal ifadede (\w+)\s\1 ilk yakalama grubuna (\w+)başvurur.

  • Değiştirme düzeninde: kullanın $number. Örneğin, gruplandırılmış normal ifade (\d)([a-z]) iki grubu tanımlar: ilk grup tek bir ondalık basamak, ikinci grup ise a ile z arasında tek bir karakter içerir. İfade şu dizede dört eşleşme bulur: 1a 2b 3c 4d. Değiştirme dizesi z$1 yalnızca ilk gruba ()$1 başvurur ve dizeyi z1 z2 z3 z4'e dönüştürür.

Aşağıdaki görüntüde bir normal ifade (\w+)\s\1 ve bir değiştirme dizesi gösterilmektedir $1. Hem normal ifade hem de değiştirme deseni, otomatik olarak numaralandırılmış ilk yakalama grubuna başvurur 1. Visual Studio'daki Hızlı Değiştir iletişim kutusunda Tümünü değiştir'i seçtiğinizde, yinelenen sözcükler metinden kaldırılır.

Visual Studio'da numaralandırılmış yakalama grubunu gösteren Hızlı Değiştirme'nin ekran görüntüsü.

İpucu

Hızlı Değiştir iletişim kutusunda Normal İfadeleri Kullan düğmesini seçtiğinizden emin olun veya Alt E tuşuna+basın.

Adlandırılmış yakalama grupları

Yakalama grubunun otomatik numaralandırmasına güvenmek yerine bir ad verebilirsiniz. Adlandırılmış yakalama grubunun söz dizimi şeklindedir (?<name>subexpression).

Numaralandırılmış yakalama grupları gibi adlandırılmış yakalama grupları normal ifadenin içinde veya bir değiştirme düzeninde kullanılabilir. Adlandırılmış yakalama grubuna erişmek için aşağıdaki örnekleri göz önünde bulundurun:

  • Normal ifade içinde: kullanın \k<name>. Örneğin, \k<repeated> normal ifadede (?<repeated>\w+)\s\k<repeated> adlı repeated ve alt ifadesi olan yakalama grubuna başvurur \w+.

  • Değiştirme düzeninde: kullanın ${name}. Örneğin, ${repeated}.

Aşağıdaki görüntüde bir normal ifade (?<repeated>\w+)\s\k<repeated> ve bir değiştirme dizesi gösterilmektedir ${repeated}. Hem normal ifade hem de değiştirme deseni adlı repeatedyakalama grubuna başvurur. Visual Studio'daki Hızlı Değiştir iletişim kutusunda Tümünü değiştir'i seçtiğinizde, yinelenen sözcükler metinden kaldırılır.

Visual Studio'da adlandırılmış yakalama grubunu gösteren Hızlı Değiştirme'nin ekran görüntüsü.

İpucu

Hızlı Değiştir iletişim kutusunda Normal İfadeleri Kullan düğmesini seçtiğinizden emin olun (veya Alt+E tuşuna basın).

Adlandırılmış yakalama grupları hakkında daha fazla bilgi için bkz . Adlandırılmış eşleşen alt ifadeler. Değiştirme desenlerinde kullanılan normal ifadeler hakkında daha fazla bilgi için bkz . Normal ifadelerde değiştirmeler.

Örnekler

Desen Açıklama
int ([_A-Za-z][_A-Za-z0-9]*) Tek tamsayı tanımlarını eşleştirin. Tanımlayıcılar bir büyük veya küçük harfle başlar ve ardından sıfır veya daha fazla harf (ile gösterilir *) harf veya sayı ile başlar. Tanımlayıcı dış parantezler tarafından olarak $1 yakalanır.
(private|internal|public)*\s*([\w]+\s+)int\s+([_A-Za-z][_A-Za-z0-9]*)\s+=\s+[+-]+(\d)+ Tamsayı değişmez değerleriyle başlatılan C# tamsayı bildirimlerini eşleştirerek erişim düzeyi, veya staticgibi const değiştiriciler, tanımlayıcı ve tanımlı değer gibi çeşitli bölümleri yakalayın. en az bir boşluk karakteri \s* için veya boşluk oluşabilir veya oluşmayabilir, kullanımına \s+ dikkat edin.
foreach\s*\(([\w\d]*)\s+([\w\d]*)\s+in\s+(.*)\) Bir döngünün açılış çizgisini eşleştirin foreach . Değişmez ayraçlar ters eğik çizgi (\) ile kaçıştır. Çeşitli gruplar , $2ve $3 olarak $1yakalanmamış parantezler tarafından yakalanır.
#define\s+([_A-Za-z][_A-Za-z0-9]*) Tanımlarla eşleşir #define (varsa değeri olmadan). Tanımlanan belirteç içinde $1depolanır.
#include\s+["<](.*)[">] Eşleştirme, C++ kaynak dosyasına ekler.