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şvuruda yer alan her bölüm, normal ifadeleri tanımlamak için kullanabileceğiniz belirli bir karakter, işleç ve yapı kategorisini listeler.

Ayrıca bu bilgileri kolayca başvuru için indirip yazdırabilirsiniz iki biçime de sağladık:

Karakter Çıkışları

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

Kaçan karakter Description 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" in "item1\titem2\t"
\r Bir satır başıyla eşleşir, \u000D. ( \r yeni satır karakterine 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" in "a bc d"
\x nn Bir karakter belirtmek için onaltılık temsili kullanır (nn tam olarak iki basamaktan oluşur). \w\x20\w "a b", "c d" in "a bc d"
\cX

\c x
X veya x tarafından belirtilen ASCII denetim karakteriyle eşler; burada X veya x, denetim karakterinin harfidir. \cC "\x0003" in "\x0003" (Ctrl-C)
\unnnn Onaltılık gösterimi (nnnn ile temsil edilen tam olarak dört basamak) kullanarak bir Unicode karakteriyle eşler. \w\u0020\w "a b", "c d" in "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 \x2A ve \. ile \x2E aynıdır. Bu, normal ifade altyapısının dil öğelerini (veya ?gibi) ve karakter değişmez öğelerini (veya ile temsil * eder) belirsizliklerini yok etmelerini \* \? sağlar. \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ı Description Desen Eşleşmeler
[character_group ] içinde herhangi bir tek karakterle character_group. Varsayılan olarak, eşleşme büyük/küçük harf duyarlıdır. [ae] "gray" içinde "a"

"a", "e" in "lane"
[^character_group ] Olumsuzlama: içinde yer alan tek bir karakterle character_group. Varsayılan olarak, character_group büyük/character_group duyarlıdır. [^aei] "r", "g" , "n" in "reign"
[ilk olarak - son ] Karakter aralığı: İlk ile son aralığındaki tek bir karakterle eşler. [A-Z] "A", "B" in "AB123"
. Joker karakter: \n dışında herhangi bir tek karakterle eşleşir.

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

"water" içinde "ate"
\p{name } Unicode genel kategorisindeki veya adıyla belirtilen adlandırılmış blokta yer alan herhangi bir tek karakterle eşler. \p{Lu}

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

"Д", "Ж" in "ДЖem"
\P{name } Unicode genel kategorisinde olmayan veya adıyla belirtilen adlandırılmış bloklar için tek bir karakterle eşler. \P{Lu}

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

"e", "m" in "ДЖem"
\w Sözcük olan herhangi bir karakterle eşleşir. \w "I", "D" "A" , , , "1" "3" in "ID A1.3"
\W Sözcük olmayan herhangi bir karakterle eşleşir. \W " ", "." in "ID A1.3"
\s Boşluk olan herhangi bir karakterle 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 Bir ondalık basamak dışında herhangi bir karakterle eşleşir. \D " ", "=" " " , , , "I" "V" in "4 = IV"

Tutturucular

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 Description Desen Eşleşmeler
^ Varsayılan olarak, eşleşme dizenin başlangıcında başlatılmalıdır; çok satırlı modda, satırın başlangıcında başlamalıdır. ^\d{3} "901-333-" içinde "901"
$ Varsayılan olarak, eşleşme dizenin sonunda veya dizenin sonundan önce gerçekleşmelidir \n ; çok satırlı modda, satırın sonundan önce veya satırın sonundaki öncesinde gerçekleşmelidir \n . -\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 \n dizenin sonundaki önünde oluşmalıdır. -\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 gerçekleşmelidir. \G\(\d\) "(1)", "(3)" , "(5)" içinde "(1)(3)(5)[7](9)"
\b Eşleşme, \w (alfasayısal) ve bir \W (alfasayısal olmayan) karakter arasındaki bir sınır üzerinde gerçekleşmelidir. \b\w+\s\w+\b "them theme"``"them them"içinde,"them theme them them"
\B Eşleşme bir sınırda gerçekleşmemelidir \b . \Bend\w*\b "ends"``"ender"içinde,"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. yapıları gruplandırma.

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

"Console.Write(value)" içinde "Write"
(?imnsx-imnsx:alt ifade ) Alt ifade içinde belirtilen seçenekleri uygular veya devre dışı bırakır. Daha fazla bilgi için bkz. normal Ifade seçenekleri. A\d{2}(?i:\w+)\b "A12xl"``"A12XL"içinde,"A12xl A12XL a12xl"
(?=alt ifade ) Sıfır genişlik pozitif ileriye yönelik onaylar. \b\w+\b(?=.+and.+) "cats", "dogs"
in
"cats, dogs and some mice."
(?!alt ifade ) Sıfır genişlik negatif ileriye yönelik onaylar. \b\w+\b(?!.+and.+) "and", "some", "mice"
in
"cats, dogs and some mice."
(?<=alt ifade ) Sıfır genişlik pozitif geriye yönelik onaylar. \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."
(?<!alt ifade ) Sıfır genişlik negatif geriye yönelik onaylar. \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."
(?>alt ifade ) Atomik grup. (?>a|ab)c "ac" 'ndaki"ac"

hiçbir şey yok"abc"

Bir bakışta Lookarounds

Normal ifade altyapısı bir lookaround ifadesi ile aynı olduğunda, özgün dizenin başlangıç (geriye dönük) veya sonuna (ileri yönlü) kadar geçerli konumdan ulaşan bir alt dize alır ve ardından Regex.IsMatch lookaround modelini kullanarak bu alt dizeden çalışır. Bu alt ifadenin sonucunun başarısı daha sonra pozitif veya negatif bir onaylama olup olmadığına göre belirlenir.

Lookaround Name İşlev
(?=check) Pozitif   ileri yönlü Dizedeki geçerli konumun hemen ardında ne olduğunu onaylar "denetle"
(?<=check) Pozitif   geriye yönelik Dizedeki geçerli konumdan hemen önce gelen her şeyi "denetle" olarak onaylar
(?!check) Negatif   İleri Dizedeki geçerli konumun hemen ardında ne olduğunu onaylar "denetle"
(?<!check) Negatif   geriye yönelik Dizedeki geçerli konumdan hemen önce gelen her şeyi "denetle" olarak onaylama

Eşleştikten sonra, modelin geri kalanı eşleşme nedeniyle başarısız olsa bile atomik gruplar yeniden değerlendirilmeyecektir. Bu, atomik grup içinde veya düzenin geri kalanında nicelik belirteçleri oluştuğunda performansı önemli ölçüde iyileştirebilir.

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. nicelik belirteçleri.

Miktar Niceleyici Description Desen Eşleşmeler
* Önceki öğeyle sıfır kez veya daha fazla eşleşir. \d*\.\d ".0", "19.9", "219.9"
+ Ö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?n" "ran", "rain"
{n } Önceki öğeyle tam olarak n kez eşleşir. ",\d{3}" ",043"``"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 , e } Önceki öğeyle en az n kez eşleşir, ancak hiç 8 kez eşleşmez . "\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. \d*?\.\d ".0", "19.9", "219.9"
+? Ö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??n" "ran", "rain"
{n }? Önceki öğeyle tam olarak n kez eşleşir. ",\d{3}?" ",043"``"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 eşleşir. "\d{2,}?" "166", "29", "1930"
{n , e }? Önceki öğeyle n ila 5 kez ve mümkün olduğunca az eşleşir. "\d{3,5}?" "166", "17668"

"193"``"024"içinde,"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 'teki normal ifadeler tarafından desteklenen geri başvuru yapıları listelenmektedir. Daha fazla bilgi için bkz. Backreference yapıları.

Yeniden başvuru yapısı Description 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. değişim yapıları.

Değişim yapısı Description Desen Eşleşmeler
| Dikey çubuk () karakteriyle ayrılmış herhangi bir öğeyle eşleşir | . th(e|is|at) "the"``"this"içinde,"this is the day."
(?(ifade ) Evet | Hayır ) Expression ile belirlenen normal ifade deseninin eşleşiyorsa Evet ile eşleşir; Aksi takdirde, isteğe bağlı hiçbir bölüm ile eşleşir. ifade sıfır genişlikli bir onaylama olarak yorumlanır. (?(A)A\d{2}\b|\b\d{3}\b) "A10"``"910"içinde,"A10 C103 910"
(?(ad ) Evet | Hayır ) Ad, adlandırılmış veya numaralandırılmış yakalama grubu, eşleşme içeriyorsa Evet ile eşleşir; Aksi takdirde, isteğe bağlı No ile eşleşir. (?<quoted>")?(?(quoted).+?"|\S+\s) "Dogs.jpg "``"\"Yiska playing.jpg\""içinde,"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. alternatifler. 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 dizeyi değiştirir. \b(\w+)(\s)(\w+)\b $3$2$1 "one two" "two one"
${ad } Adlandırılmış grup adıyla eşleştirilen alt dizeyi değiştirir. \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 düzeninde) veya bir veya daha fazla sabit olarak belirtilebilir RegexOptions . Bu hızlı başvuru yalnızca satır içi seçeneklerini listeler. Satır içi ve seçenekler hakkında daha fazla bilgi için RegexOptions bkz. normal ifade seçeneklerimakalesi.

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

  • Bir (?imnsx-imnsx) seçenek veya seçenek kümesinden önce gelen eksi işareti (-), bu seçenekleri devre dışı bırakır. Örneğin, (?i-mn) büyük/küçük harf duyarsız eşleştirmeyi ( i ) açar, çok satırlı modu ( m ) kapatır ve adsız 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.
  • Gruplandırma yapısıalt ifadesini kullanarak (?imnsx-imnsx: ) , yalnızca belirtilen grup için seçenekleri tanımlar.

.NET normal ifade motoru 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"içinde,"aardvark AAAuto aaaAuto Adam breakfast"
m Çok satırlı modunu kullanın. ^ ve $ bir dizenin başlangıcı ve bitişi yerine bir satırın başlangıcını ve bitişini eşleştirin. Bir örnek için, normal Ifade seçeneklerinde"çok satırlı mod" bölümüne bakın.
n Adsız grupları yakalamayın. Bir örnek için, normal Ifade seçeneklerinde"yalnızca belirtik yakalama" bölümüne bakın.
s Tek satır modunu kullanın. Bir örnek için, normal Ifade seçeneklerinde"tek satır modu" 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"içinde,"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) Bir desenin ortasında büyük/küçük harfe duyarsızlığı gibi seçenekleri ayarlar veya devre dışıer. Daha fazla bilgi için bkz. Normal İfade Seçenekleri. \bA(?i)b\w+\b , "ABA" içinde ile "Able" eşler "ABA Able Act"
(?#comment (açıklama) ) Satır içi açıklama. Açıklama ilk kapanış parantezinde sona erer. \bA(?#Matches words starting with A)\w+\b
# [satır sonu] X-mode yorumu. Açıklama, kaçışsız bir şekilde başlar # ve satırın sonuna kadar devam eder. (?x)\bA\w+\b#Matches words starting with A

Ayrıca bkz.