Normal İfade Dili - Hızlı Başvuru

Normal bir ifade, normal ifade motorunun giriş metninde eşleştirmeyi denediği bir desendir. Bir desen, bir veya daha çok karakter sabitinden, işleçlerden veya yapılardan oluşur. Kısa bir giriş için bkz . .NET Normal İfadeleri.

Bu hızlı başvurudaki her bölüm, normal ifadeleri tanımlamak için kullanabileceğiniz belirli bir karakter, işleç ve yapı kategorisini listeler.

Bu bilgileri, kolay başvuru için indirip yazdırabileceğiniz iki biçimde de sağladık:

Karakter Çıkışları

Normal ifadedeki ters eğik çizgi karakteri (\), onu izleyen karakterin özel bir karakter olduğunu (aşağıdaki tabloda gösterildiği gibi) veya tam anlamıyla yorumlanması gerektiğini belirtir. Daha fazla bilgi için bkz . Karakter Kaçışları.

Kaçan karakter Açıklama Desen Eşleşmeler
\a Bir bell karakterle eşleşir, \u0007. \a "Error!" + '\u0007' içinde "\u0007"
\b Bir karakter sınıfında, geri al tuşuyla eşleşir, \u0008. [\b]{3,} "\b\b\b\b" içinde "\b\b\b\b"
\t Bir sekmeyle eşleşir, \u0009. (\w+)\t "item1\t", "item2\t""item1\titem2\t"
\r Bir satır başıyla eşleşir, \u000D. (\r yeni satır karakteriyle eşdeğer değildir, \n.) \r\n(\w+) "\r\nThese are\ntwo lines." içinde "\r\nThese"
\v Bir dikey sekmeyle eşleşir, \u000B. [\v]{2,} "\v\v\v" içinde "\v\v\v"
\f Form besleme ile eşleşir, \u000C. [\f]{2,} "\f\f\f" içinde "\f\f\f"
\n Yeni bir satırla eşleşir, \u000A. \r\n(\w+) "\r\nThese are\ntwo lines." içinde "\r\nThese"
\e Bir çıkışla eşleşir, \u001B. \e "\x001B" içinde "\x001B"
\nnn Bir karakter belirtmek için sekizli gösterimi kullanır (nnn iki veya üç basamaktan oluşur). \w\040\w "a b", "c d""a bc d"
\xnn Bir karakter belirtmek için onaltılık gösterimi kullanır (nn tam olarak iki basamaktan oluşur). \w\x20\w "a b", "c d""a bc d"
\cX

\cx
X veya x tarafından belirtilen ASCII denetim karakteriyle eşleşir; burada X veya x, denetim karakterinin harfidir. \cC "\x0003" in "\x0003" (Ctrl-C)
\unnnn Onaltılık gösterim (nn ile gösterildiği gibi tam olarak dört basamak) kullanarak bir Unicode karakteriyle eşleşir. \w\u0020\w "a b", "c d""a bc d"
\ Bu konudaki bu ve diğer tablolarda kaçış karakteri olarak tanınmayan bir karakterden önce geldiğinde karakterle eşleşir. Örneğin, \* ile aynıdır \x2Ave \. ile \x2Eaynıdır. Bu, normal ifade altyapısının dil öğelerini (* veya ?) ve karakter değişmez değerlerini (veya \?ile temsil edilir) belirsizleştirmesine \* olanak tanır. \d+[\+-x\*]\d+ "(2+2) * 3*9" içinde "2+2" ve "3*9"

Karakter Sınıfları

Bir karakter sınıfı, karakter kümelerinden herhangi biriyle eşleşir. Karakter sınıfları aşağıdaki tabloda listelenen dil öğelerini içerir: Daha fazla bilgi için bkz . Karakter Sınıfları.

Karakter sınıfı Açıklama Desen Eşleşmeler
[ character_group ] character_group'daki tek bir karakterle eşleşir. Varsayılan olarak, eşleşme büyük/küçük harf duyarlıdır. [ae] "gray" içinde "a"

"a", "e""lane"
[^ character_group ] Olumsuzlama: character_group olmayan tek bir karakterle eşleşir. Varsayılan olarak, character_group karakterleri büyük/küçük harfe duyarlıdır. [^aei] "r", "g", "n""reign"
[birinci - son ] Karakter aralığı: Aralıktaki ilk karakterden sona kadar tek bir karakterle eşleşir. [A-Z] "A", "B""AB123"
. Joker karakter: dışında \nherhangi bir tek karakterle eşleşir.

Bir değişmez nokta karakteriyle (. veya \u002E) eşleştirmek için, önüne kaçış karakteri (\. ) yazmanız gerekir.
a.e "nave" içinde "ave"

"water" içinde "ate"
\p{ad } Unicode genel kategorisindeki veya adla belirtilen adlandırılmış bloktaki herhangi bir tek karakterle eşleşir. \p{Lu}

\p{IsCyrillic}
"C", "L""City Lights"

"Д", "Ж""ДЖem"
\P{ad } Unicode genel kategorisinde veya adla belirtilen adlandırılmış blokta olmayan tek bir karakterle eşleşir. \P{Lu}

\P{IsCyrillic}
"i", "t", "y""City"

"e", "m""ДЖem"
\w Herhangi bir sözcük karakteriyle eşleşir. \w "I", "D", "A", "1", , "3""ID A1.3"
\W Sözcük olmayan herhangi bir karakterle eşleşir. \W " ", ".""ID A1.3"
\s Herhangi bir boşluk karakteriyle eşleşir. \w\s "ID A1.3" içinde "D "
\S Boşluk olmayan herhangi bir karakterle eşleşir. \s\S "int __ctr" içinde " _"
\d Herhangi bir ondalık basamakla eşleşir. \d "4 = IV" içinde "4"
\D Ondalık basamak dışında herhangi bir karakterle eşleşir. \D " ", "=", " ", "I", , "V""4 = IV"

Bağlayıcılar

Yer işaretleri veya atomik sıfır genişlik onayları, dizedeki geçerli konuma bağlı olarak eşleşmenin başarılı veya başarısız olmasına neden olurlar, ancak altyapının dize boyunca ilerlemesine veya karakterleri tüketmesine neden olmazlar. Aşağıdaki tabloda listelenen meta karakterler tutturuculardır. Daha fazla bilgi için bkz . Tutturucular.

Onaylama işlemi Açıklama Desen Eşleşmeler
^ Varsayılan olarak, eşleşme dizenin başlangıcında başlamalıdır; çok satırlı modda, satırın başında başlamalıdır. ^\d{3} "901-333-" içinde "901"
$ Varsayılan olarak, eşleşme dizenin sonunda veya dizenin sonundan önce \n gerçekleşmelidir; çok satırlı modda, satırın sonundan önce veya satırın sonundan önce \n gerçekleşmelidir. -\d{3}$ "-901-333" içinde "-333"
\A Eşleşme dizenin başlangıcında gerçekleşmelidir. \A\d{3} "901-333-" içinde "901"
\Z Eşleşme, dizenin sonunda veya dizenin sonundan önce \n gerçekleşmelidir. -\d{3}\Z "-901-333" içinde "-333"
\z Eşleşme dizenin sonunda gerçekleşmelidir. -\d{3}\z "-901-333" içinde "-333"
\G Eşleşme, önceki eşleşmenin sona erdiği noktada veya önceki eşleşme yoksa, dizede eşleştirmenin başlatıldığı konumda gerçekleşmelidir. \G\(\d\) "(1)", "(3)", "(5)""(1)(3)(5)[7](9)"
\b Eşleşme bir (alfasayısal) ile (nonalphanumeric) karakteri arasındaki \w bir \W sınırda gerçekleşmelidir. \b\w+\s\w+\b "them theme", "them them""them theme them them"
\B Eşleşme bir \b sınırda gerçekleşmemelidir. \Bend\w*\b "ends", "ender""end sends endure lender"

Gruplandırma Yapıları

Yapıları gruplandırma, normal bir ifadenin alt ifadelerini açıklar ve tipik olarak bir giriş dizesinin alt dizelerini yakalar. Yapıları gruplandırma aşağıdaki tabloda listelenen dil öğelerini içerir. Daha fazla bilgi için bkz . Gruplandırma Yapıları.

Yapıyı gruplandırma Açıklama Desen Eşleşmeler
(Aradığına ) Eşleşen alt ifadeyi yakalar ve buna bir tabanlı bir sıra numarası atar. (\w)\1 "deep" içinde "ee"
(?<ad > Aradığına )
veya
(?'ad ' Aradığına )
Eşleşen alt ifadeyi adlandırılmış bir gruba yakalar. (?<double>\w)\k<double> "deep" içinde "ee"
(?<ad1 - ad2 > Aradığına )
veya
(?'ad1 - ad2 ' Aradığına )
Bir dengeleme grubu tanımını tanımlar. Daha fazla bilgi için, Gruplandırma Yapıları'nın "Grup Tanımını Dengeleme" bölümüne bakın. (((?'Open'\()[^\(\)]*)+((?'Close-Open'\))[^\(\)]*)+)*(?(Open)(?!))$ "3+2^((1-3)*(3-1))" içinde "((1-3)*(3-1))"
(?:Aradığına ) Yakalama yapmayan grubu tanımlar. Write(?:Line)? "Console.WriteLine()" içinde "WriteLine"

"Console.Write(value)" içinde "Write"
(?imnsx-imnsx:Aradığına ) Alt ifade içinde belirtilen seçenekleri uygular veya devre dışı bırakır. Daha fazla bilgi için bkz . Normal İfade Seçenekleri. A\d{2}(?i:\w+)\b "A12xl", "A12XL""A12xl A12XL a12xl"
(?=Aradığına ) Sıfır genişlik pozitif ileriye yönelik onaylar. \b\w+\b(?=.+and.+) "cats", "dogs"
içinde
"cats, dogs and some mice."
(?!Aradığına ) Sıfır genişlik negatif ileriye yönelik onaylar. \b\w+\b(?!.+and.+) "and", "some", "mice"
içinde
"cats, dogs and some mice."
(?<=Aradığına ) Sıfır genişlik pozitif geriye yönelik onaylar. \b\w+\b(?<=.+and.+)

———————————

\b\w+\b(?<=.+and.*)
"some", "mice"
içinde
"cats, dogs and some mice."
————————————
"and", "some", "mice"
içinde
"cats, dogs and some mice."
(?<!Aradığına ) Sıfır genişlik negatif geriye yönelik onaylar. \b\w+\b(?<!.+and.+)

———————————

\b\w+\b(?<!.+and.*)
"cats", "dogs", "and"
içinde
"cats, dogs and some mice."
————————————
"cats", "dogs"
içinde
"cats, dogs and some mice."
(?>Aradığına ) Atomik grup. '(?>a|ab)c "ac" içinde"ac"

içinde hiçbir şey yok"abc"

Bir bakışta göz atma

Normal ifade altyapısı bir lookaround ifadesine ulaştığında, geçerli konumdan özgün dizenin başlangıcına (lookbehind) veya sonuna (lookahead) ulaşan bir alt dize alır ve ardından bu alt dize üzerinde lookaround desenini kullanarak çalışır Regex.IsMatch . Bu alt ifadenin sonucunun başarısı pozitif mi yoksa negatif bir onay mı olduğuna göre belirlenir.

Ara Veri Akışı Adı İşlev
(?=check) Pozitif Lookahead Dizedeki geçerli konumdan hemen sonra gelenin "check" olduğunu onaylar
(?<=check) Pozitif Bakış Dizedeki geçerli konumdan hemen önce gelenin "check" olduğunu onaylar
(?!check) Negatif Lookahead Dizedeki geçerli konumdan hemen sonra gelenin "check" olmadığını onaylar
(?<!check) Negatif Bakış Dizedeki geçerli konumdan hemen öncekinin "check" olmadığını onaylar

Eşleştirildikten sonra, desenin geri kalanı eşleşme nedeniyle başarısız olsa bile atomik gruplar yeniden değerlendirilmez. Bu, niceleyiciler atomik grup içinde veya desenin geri kalanında gerçekleştiğinde performansı önemli ölçüde artırabilir.

Miktar Niceleyiciler

Niceleyici, önceki öğenin (karakter, grup veya karakter sınıfı olabilir) kaç örneğinin oluşacak eşleme için giriş dizesinde mevcut olması gerektiğini belirtir. Miktar niceleyiciler aşağıdaki tabloda listelenen dil öğelerini içerir. Daha fazla bilgi için bkz . Quantifiers.

Miktar Niceleyici Açıklama Desen Eşleşmeler
* Önceki öğeyle sıfır kez veya daha fazla eşleşir. a.*c "abcbc" içinde "abcbc"
+ Önceki öğeyle bir kez veya daha fazla eşleşir. "be+" "bee" içinde "been", "be" içinde "bent"
? Önceki öğeyle sıfır veya bir kez eşleşir. "rai?" "rain" içinde "rai"
{n } Önceki öğeyle tam olarak n kez eşleşir. ",\d{3}" ",043" içinde "1,043.6", ",876", ",543"ve ",210" içinde "9,876,543,210"
{n ,} Önceki öğeyle en az n kez eşleşir. "\d{2,}" "166", "29", "1930"
{n , m } Önceki öğeyle en az n kez eşleşir, ancak en fazla m kez eşleşir . "\d{3,5}" "166", "17668"

"193024" içinde "19302"
*? Önceki öğeyle sıfır kez veya daha fazla ancak mümkün olduğunca az eşleşir. a.*?c "abcbc" içinde "abc"
+? Önceki öğeyle bir kez veya daha fazla ancak mümkün olduğunca az eşleşir. "be+?" "be" içinde "been", "be" içinde "bent"
?? Önceki öğeyle sıfır veya bir kez ancak mümkün olduğunca az eşleşir. "rai??" "rain" içinde "ra"
{n }? Önceki öğeyle tam olarak n kez eşleşir. ",\d{3}?" ",043" içinde "1,043.6", ",876", ",543"ve ",210" içinde "9,876,543,210"
{n ,}? Önceki öğeyle en az n kez, ancak mümkün olduğunca az kez eşleşir. "\d{2,}?" "166", "29", "1930"
{n , m }? N ile m saatleri arasında önceki öğeyle eşleşir, ancak mümkün olduğunca az kez. "\d{3,5}?" "166", "17668"

"193", "024""193024"

Yeniden Başvuru Yapıları

Yeniden başvuru, aynı normal ifadede daha sonra tanımlanabilecek alt ifadeyle daha önce eşleşmesine olanak sağlar. Aşağıdaki tabloda.NET'te normal ifadeler tarafından desteklenen geri başvuru yapıları listelenmektedir. Daha fazla bilgi için bkz . Geri Başvuru Yapıları.

Yeniden başvuru yapısı Açıklama Desen Eşleşmeler
\sayı Yeniden başvuru. Numaralandırılmış ifadenin değeriyle eşleşir. (\w)\1 "seek" içinde "ee"
\k<ad > Adlandırılan yeniden başvuru. Adlandırılmış ifadenin değeriyle eşleşir. (?<char>\w)\k<char> "seek" içinde "ee"

Değişim Yapıları

Değişim yapıları, ve/veya eşleştirmeyi etkinleştirmek üzere bir normal ifadeyi değiştirir. Bu yapılar aşağıdaki tabloda listelenen dil öğelerini içerir. Daha fazla bilgi için bkz . Alternation Constructs.

Değişim yapısı Açıklama Desen Eşleşmeler
| Dikey çubuk (|) karakteriyle ayrılmış herhangi bir öğeyle eşleşir. th(e|is|at) "the", "this""this is the day."
(?(ifade ) evet | Hayır )
veya
(?(ifade ) evet )
İfade tarafından belirlenen normal ifade deseni eşleşiyorsa evet ile eşleşir; aksi takdirde isteğe bağlı hayır bölümüyle eşleşir. ifadesi sıfır genişlikli onay olarak yorumlanır.

Adlandırılmış veya numaralandırılmış bir yakalama grubuyla belirsizliği önlemek için isteğe bağlı olarak aşağıdaki gibi açık bir onay kullanabilirsiniz:
(?( (?=ifade ) ) evet | Hayır )
(?(A)A\d{2}\b|\b\d{3}\b) "A10", "910""A10 C103 910"
(?(ad ) evet | Hayır )
veya
(?(ad ) evet )
Ad, adlandırılmış veya numaralandırılmış yakalama grubu eşleşmesi varsa evet ile eşleşir; aksi takdirde, isteğe bağlı hayır ile eşleşir. (?<quoted>")?(?(quoted).+?"|\S+\s) "Dogs.jpg ", "\"Yiska playing.jpg\"""Dogs.jpg \"Yiska playing.jpg\""

Değişimler

Değişimler değiştirme desenlerinde desteklenen normal ifade dil öğeleridir. Daha fazla bilgi için bkz . Değiştirmeler. Aşağıdaki tabloda listelenen meta karakterler atomik sıfır genişlik onaylarıdır.

Karakter Açıklama Desen Değiştirme deseni Giriş dizesi Sonuç Dizesi
$sayı Grup numarasıyla eşleşen alt dizenin yerini alır. \b(\w+)(\s)(\w+)\b $3$2$1 "one two" "two one"
${ad } Adlandırılmış grup adıyla eşleşen alt dizenin yerini alır. \b(?<word1>\w+)(\s)(?<word2>\w+)\b ${word2} ${word1} "one two" "two one"
$$ Değişmez değerli bir "$" işaretinin yerini alır. \b(\d+)\s?USD $$$1 "103 USD" "$103"
$& Tam eşleşmenin bir kopyasının yerini alır. \$?\d*\.?\d+ **$&** "$1.30" "**$1.30**"
$` Eşleşmeden önce giriş dizesi metninin tamamının yerini alır. B+ $` "AABBCC" "AAAACC"
$' Eşleşmeden sonra giriş dizesi metninin tamamının yerini alır. B+ $' "AABBCC" "AACCCC"
$+ Yakalanan son grubun yerini alır. B+(C+) $+ "AABBCCDD" "AACCDD"
$_ Giriş dizesinin tamamının yerini alır. B+ $_ "AABBCC" "AAAABBCCCC"

Normal İfade Seçenekleri

Normal ifade sisteminin normal ifade modellerini nasıl denetleyeceğiyle ilgili seçenekler belirtebilirsiniz. Bu seçeneklerin çoğu satır içi (normal ifade deseninde) veya bir veya daha fazla RegexOptions sabit olarak belirtilebilir. Bu hızlı başvuru yalnızca satır içi seçeneklerini listeler. Satır içi ve RegexOptions seçenekler hakkında daha fazla bilgi için Normal İfade Seçenekleri makalesine bakın.

Satır içi seçeneği iki şekilde belirtebilirsiniz:

  • Bir seçenek veya seçenek kümesinden önceki eksi işaretinin (-) bu seçenekleri kapattığı çeşitli yapısını (?imnsx-imnsx)kullanarak. Örneğin, (?i-mn) büyük/küçük harfe duyarlı olmayan eşleştirmeyi (i) açar, çok satırlı modu (m) kapatır ve adlandırılmamış grup yakalamalarını (n) kapatır. Seçenek, seçeneğin tanımlandığı noktadan itibaren normal ifade deseni için geçerlidir ve desenin sonuna kadar ya da bir başka yapının seçeneği tersine çevirdiği noktaya kadar etkilidir.
  • Yalnızca belirtilen grup için seçenekleri tanımlayan gruplandırma yapısı(?imnsx-imnsx:alt) ifadesini kullanarak.

.NET normal ifade altyapısı aşağıdaki satır içi seçenekleri destekler:

Seçenek Açıklama Desen Eşleşmeler
i Büyük küçük harf duyarlı eşleme kullanın. \b(?i)a(?-i)a\w+\b "aardvark", "aaaAuto""aardvark AAAuto aaaAuto Adam breakfast"
m Çok satırlı modunu kullanın. ^ ve $ bir dizenin başlangıcı ve sonu yerine satırın başlangıcıyla bitişini eşleştirin. Örneğin, Normal İfade Seçenekleri'ndeki "Çok Satırlı Mod" bölümüne bakın.
n Adsız grupları yakalamayın. Örneğin, Normal İfade Seçenekleri'ndeki "Yalnızca Açık Yakalamalar" bölümüne bakın.
s Tek satır modunu kullanın. Örneğin, Normal İfade Seçenekleri'ndeki "Tek Satırlı Mod" bölümüne bakın.
x Normal ifade deseninde kaçışsız boşluğu yoksay. \b(?x) \d+ \s \w+ "1 aardvark", "2 cats""1 aardvark 2 cats IV centurions"

Çeşitli Yapılar

Çeşitli yapılar, bir normal ifade desenini değiştirir veya bununla ilgili bilgi sağlar. Aşağıdaki tabloda .NET tarafından desteklenen çeşitli yapılar listelenmektedir. Daha fazla bilgi için bkz . Çeşitli Yapılar.

Oluştur Tanım Örnek
(?imnsx-imnsx) Desenin ortasında büyük/küçük harf duyarsızlığı gibi seçenekleri ayarlar veya devre dışı bırakır. Daha fazla bilgi için bkz . Normal İfade Seçenekleri. \bA(?i)b\w+\biçinde ile "Able" eşleşir "ABA""ABA Able Act"
(?#yorum ) Satır içi açıklama. Açıklama ilk kapanış parantezinde sona erer. \bA(?#Matches words starting with A)\w+\b
# [satırın sonuna] X-mode yorumu. Açıklama, sıralanmamış # bir şekilde başlar ve satırın sonuna kadar devam eder. (?x)\bA\w+\b#Matches words starting with A

Ayrıca bkz.