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" |
\x nn |
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" |
\c X\c x |
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) |
\u nnnn |
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 \x2A ve \. ile \x2E aynı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 \n herhangi 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:
Ç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+\b iç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 |