2013-06-13 34 views
5

Bu, sonuçta daha büyük bir ifadenin bir parçası olacak, ancak burada daha basit bir biçime indirdim (yani, burada 19 olası yerine gerçek bir olasılık 40 olasılığa sahip olacak). Düzenli İfade Minimum Uzunluğu

;123?T 

Bu regex karşı başarılı bir maç olsun: Aşağıdaki giriş Verilen

^(?:;(\d{0,19})\?.){3,40}$ 

tek şey: Ancak

^(?:;(\d{0,19})\?.){1,40}$ 

, bu regex karşı bir maç alamadım Değişiyorum, her ikisi de girdinin tatmin etmesi gereken minimum uzunluk. Birincisi niçin bir eşleşme buluyor, ikincisi de yok mu? Belki de bu niceleyiciyi anlamıyorum, ancak basitçe {MIN, MAX} olduğunu düşündüm.

Ayrıca, aşağıdaki çevrimiçi test her ikisinde de bu test ettik:

regular-expressions.info

regexpal.com

+2

Minimum uzunluğunu değil, '(?:; (\ D {0,19}) \ ?.) 'şeklindeki yinelemenin sayısını değiştiremezsiniz. ek bir karakter). –

cevap

7

ifadesi ^(?:;(\d{0,19})\?.) bu ;123?T tüm eşleştirme ilk bölümünde bulunmaktadır.

İfadenin {1,40} sonraki kısmı ile yukarıdaki 1 ile 40 kez eşleştiğini söylüyorsunuz. Bir satırda ;123?T 3 kez eşleştirmeye çalışırsanız, bu açıkça işe yaramazsa, ve {3,40} derken, durum böyle olur.

+3

ikinci normal ifade, aşağıdaki gibi bir eşleşme ile eşleşecektir: Eğer bu yanıtı daha açık hale getirirse, 123? T; 456? T; 789? T. ikinci regex tüm grubunuzu en az üç kez eşleştirmeyi ister. – escrafford

+0

harika, teşekkürler! Tamamen mantıklı. – heath