2015-04-23 35 views
12

ile düzenli ifadeler kullanarak eşleştirme Normal bir dili doğrulamak için düzenli ifadeyi kullanabilirsiniz. Sorum, içeriğe duyarlı bir dili doğrulamak için kullanabilir misiniz? Hiyerarşide modern regex ne kadar güçlü?Bir n n^^^^^^^^^^^^ (örneğin “aaabbbccc”) C#

^n b^n c^n ile eşleşen dizeleri denetleyen bir regex oluşturmak için nasıl giderdiniz?

Aşağıdaki durumlar uymalıdır:

abc 
aabbcc 
aaabbbccc 

Aşağıdaki durumlar eşleşmemelidir:

abbc 
aabbc 
aabbbccc 
+1

N bilinmiyor? Ya da tüm harfler için sayı aynı olduğu sürece herhangi bir sayı mı? – Robbert

+0

@Robbert, son – RaGe

+0

ile benzer: [Yakalama Niceleyicileri ve Niceleyici Aritmetiği] (http://stackoverflow.com/questions/23001137/capturing-quantifiers-and-quantifier-arithmetic) – HamZa

cevap

13

.NET bunu yapmak kullanmak gerekir balancing groups sağlar; gibi bir şey: Her a için

^(?<n>(?<o>a))*(?<-n>b)*(?<-o>c)*(?(n)(?!))(?(o)(?!))$ 

Artış n ve o ya sayaç hala sıfırdan büyükse o zaman maçı ((?!)) fail, her c için daha sonra her b için n ve o azaltma.

+0

Böyle bir şey yapmanın mümkün olacağını düşünmemiştim! – Matthew

+0

Fantastik! İşe yaradı! – LeBron23

+0

@minitech - 100 bin itibara ulaştığınız için tebrikler! – Kobi

İlgili konular