İngilizce dilinde oku

Aracılığıyla paylaş


Visual Studio'da normal ifadeleri kullanma

Visual Studio, metin 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 kapsamlı bir referans için Düzenli ifade dilibölümüne bakın.

Amaç İfade Ö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çindeki "aro" ve "about" içindeki "abo" ile eşleşir ancak "across" içindeki "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"ta "ar" ve "aardvark"ta "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 cihazı" içindeki "eed" ve "solmuş" içindeki "ed" ile eşleşir
Herhangi bir karakteri bir veya daha fazla kez eşleştirin. .+ e.+e "feeder" içindeki "eede" ile eşleşir ancak "feed" 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ştir (tembel eşleme). *? \w*?d "fad" ve "ed" ile eşleşir fakat gecikmeli eşleşme nedeniyle "faded" 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ştir (tembel eşleşme). +? e\w+? "asleep" içinde "ee" ve "faded" içinde "ed" ile eşleşir ancak "fade" içinde eşleşme bulamaz.
Eşleştirme dizesini bir satır veya dizenin başına bağlama ^ ^car yalnızca satırın başında göründüğünde "araba" sözcüğüyle eşleşir
Eşleştirme dizesini çizginin sonuna bağlayın \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" kelimesindeki "bet", "beneath" kelimesindeki "ben" ve "beside" kelimesindeki "bes" ile eşleşir, ancak "below" kelimesinde 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]" ifadesinin ilk grubuna atıfta bulunur. Daha fazla bilgi için bkz. Yakalama grupları ve değiştirme kalıpları.
Eşleşmeyi geçersiz kılma (?! abc) real(?!ity) "gerçek" ve "gerçekten" kelimelerinde geçen "gerçek" kısmını bulur ama "gerçeklik" kelimesinde bulmaz. Ayrıca "realityreal" kelimesinde ikinci "gerçek" kısmını bulur, ancak ilkini bulmaz.
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] "before" içinde "bef", "behind" içinde "beh" ve "below" içinde "bel" ile eşleşir, ancak "beneath" içinde eşleşme bulmaz.
Ö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 çizgiyi izleyen karakter 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ştir. {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şmez.
Unicode kategorisindeki metniile eşleştir. 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ı eşleştirme \b (Karakter sınıfı dışında \b bir sözcük sınırı belirtir ve karakter sınıfının içinde \b bir geri al alanı belirtir.) \bin "inside" kelimesindeki "in" ile eşleşir ancak "pinto" içinde eşleşme bulamaz.
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 "End" ve "Begin" ile yalnızca "End" bir satırdaki son dize olduğunda ve "Begin" bir sonraki satırdaki ilk dize olduğunda eşleşir
herhangi bir sözcük karakterini eşleştirin \w a\wd "add" ve "a1d" ile eşleşir ancak "a d" ile eşleşmez
herhangi bir boşluk karakterini eşleştirin \s Public\sInterface "Ortak Arabirim" tümceciğiyle eşleşir
herhangi bir ondalık basamak karakterini eşleştirin \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" (satır başı ve ardından yeni bir satır) ile biter. 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.

Yakalama grupları ve değiştirme kalıpları

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 ifadelerde gruplandırma yapıları.

Numaralandırılmış bir yakalama grubu oluşturmak için, alt ifadeyi normal ifade desenindeki parantezlerle çevreleyin. 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 ifadeiçinde: \numberkullanın. Örneğin, normal ifadedeki \1(\w+)\s\1(\w+)ilk yakalama grubuna başvurur.

  • Değişim deseninde: $numberkullanın. Örneğin, gruplandırılmış normal ifade (\d)([a-z]) iki grup tanımlar: ilk grup tek bir ondalık basamak içerir ve ikinci grup ile zarası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 z4dönüştürür.

Aşağıdaki görüntüde bir düzenli ifade (\w+)\s\1 ve bir değiştirme dizesi $1gösterilmektedir. Hem normal ifade hem de değiştirme deseni, otomatik olarak numaralandırılmış ilk yakalama grubuna başvurur 1. Visual Studio'da Hızlı Değiştir iletişim kutusunda Tüm 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+Etuşlarına 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 (?<name>subexpression)şeklindedir.

Adlandırılmış yakalama grupları, sayı ile belirtilmiş yakalama grupları gibi, normal ifadenin içinde veya bir yerine koyma deseni içinde kullanılabilir. Adlandırılmış yakalama grubuna erişmek için aşağıdaki örnekleri göz önünde bulundurun:

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

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

Aşağıdaki görüntüde (?<repeated>\w+)\s\k<repeated> normal ifade olarak ve ${repeated}değiştirme dizesi gösterilmektedir. Düzenli ifade ve değiştirme şablonu, repeatedadlı yakalama grubuna referans verir. Visual Studio'da Hızlı Değiştir iletişim kutusunda Tüm 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 +Etuş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, ardından sıfır veya daha fazla harfle (*ile gösterilir) harf veya sayılarla başlar. Tanımlayıcı dış parantezler tarafından $1 olarak yakalanır.
(private|internal|public)*\s*([\w]+\s+)int\s+([_A-Za-z][_A-Za-z0-9]*)\s+=\s+[+-]+(\d)+ C# tamsayı bildirimlerinde, tamsayı değişmez değerleriyle başlatılan ifadeleri, erişim düzeyi, const veya staticgibi değiştiriciler, tanımlayıcı ve tanımlı değer gibi çeşitli bölümlere eşleştirerek yakalayın. En az bir boşluk karakteri için \s+ kullanılmasına veya boşluk oluşabiliyorsa ya da oluşmuyorsa \s* kullanılmasına dikkat edin.
foreach\s*\(([\w\d]*)\s+([\w\d]*)\s+in\s+(.*)\) foreach döngüsünün açılış çizgisini eşleştirin. Harfi parantezler ters eğik çizgi (\) ile kaçırılır. Çeşitli gruplar, $1, $2ve $3 olarak ayarlanmamış parantezler tarafından yakalanır.
#define\s+([_A-Za-z][_A-Za-z0-9]*) #define tanımlarıyla eşleşir (varsa değeri olmadan). Tanımlanan belirteç $1içinde depolanır.
#include\s+["<](.*)[">] C++ kaynak dosyasında include dosyalarını eşleştir.