ve Regex_For_Range adresinden örneğin bir normal ifade oluşturduktan sonra:
\b0*(1[1-9][0-9]|[2-9][0-9]{2}|1[0-9]{3}|2[01][0-9]{2}|22[0-2][0-9]|223[0-4])\b
işi halleder.
işlem (hala Regex jeneratör izleyen) olması:
Birincisi, eşit uzunlukta girmeye aralıkları:
110 - 999
1000 - 2234
İkinci olarak, basit Regexes verim aralıkları girmeye :
110 - 199
200 - 999
1000 - 1999
2000 - 2199
2200 - 2229
2230 - 2234
açın, bir normal ifade her bir aralığı: 10
1[1-9][0-9]
[2-9][0-9]{2}
1[0-9]{3}
2[01][0-9]{2}
22[0-2][0-9]
223[0-4]
azalt bitişik güçleri: 1 [1-9] [0-9] [2-9] [0- 9] {2} 1 [0-9] {3} 2 [01] [0-9] {2} 22 [0-2] [0-9] 223 [0-4]
Yukarıdaki regexlerin birleştirilmesiyle elde edilen değerler:
regex ön eklerine dayalı ağaca
Ayrıştırma:
. 1 [1-9] [0-9]
+ [0-9]{3}
+ [2-9] [0-9]{2}
+ 2 [01] [0-9]{2}
+ 2 [0-2] [0-9]
+ 3 [0-4]
bir içine çözümleme ağacı Torna
0*(1[1-9][0-9]|[2-9][0-9]{2}|1[0-9]{3}|2[01][0-9]{2}|22[0-2][0-9]|223[0-4])
Sonraki bir ağaç kullanarak genel önekleri Faktoring çalışacağım regex verimleri:
0*(1([1-9][0-9]|[0-9]{3})|[2-9][0-9]{2}|2([01][0-9]{2}|2([0-2][0-9]|3[0-4])))
Sonuç olarak daha kısa olanı seçiyoruz. Eğer (VonC cevap gibi) bazı saçma görünümlü regex ile yapabilirdi iken
\b0*(1[1-9][0-9]|[2-9][0-9]{2}|1[0-9]{3}|2[01][0-9]{2}|22[0-2][0-9]|223[0-4])\b
Evet mümkündür. Yani ayak tırnaklarınızı çalışan bir testere ile kesiyor. Ne de çok iyi fikirler. – paxdiablo