2011-08-18 18 views
5

Şu anda (. izin verilmez sıfır Lider) 1'den 12'ye girdi temsil etmekRegex sayı aralıklarını nasıl gösterir (ör. 1 ila 12)? oldukça <em>hacky</em> görünüyor Ancak

([1-9]|1[0-2]) kullanıyorum ve bazı günlerde o düpedüz kirli görünüyor.

to uygun yapmak için yerleşik bir yol var mı?

Sayı aralıklarını temsil etmenin başka yolları nelerdir?

+0

"Bigger daha iyi" ise, o zaman (1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12) daha iyi olurdu. – Ingo

+0

@Ingo, düşüncelerimi – Pacerier

+0

'dan önce geçmemiş olan, ancak bir anlamda en basit çözüm olan ve muhtemelen ne isteyeceğinize dair bir ipucu veren açık sözlü olmalı: ay numaraları? – Ingo

cevap

4

alamadım [2-9]|1[0-2]? gibi formlarda, geri dönüşü engeller, ancak burada çok az fark yaratır. Ben normal ifadeleri iyi idare edebilecek olsa bile, bu tür "belirsizlikleri" önlemek için XML Şeması tarafından koşullandırılmış.

+0

Temel olarak, eşleştirici bir "1" karakteri gördüğünde, "anlam" daha fazla karakter görene kadar belirsizdir. [1-9] için "1" veya 1 [0-2] için "1" mi? Regex anlamla ilgilenmez, ancak yine de bir etkinlik kaygısıdır çünkü eşleştirici, belirsizlik ortadan kalkana kadar her iki dalı da aktif tutmak zorundadır. – xan

+0

böylece normal ifadenin gözünde diyorsunuz ki en hızlı çözüm: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12? – Pacerier

+0

Hayır, '[2-9]' ile '' 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9' arasında karşılaştırma yapıyorum - hangisinin daha hızlı olduğunu bilmiyorum. '10 |' ile '10 |' arasında karşılaştırma yapıyorum. Böyle önemsiz bir örnek için bir konu yapacağı için değil, daha fazla ilgili ifadeler için, ortak ortak öneklerin kaldırılmasına yardımcı olacaktır. Belki de daha iyi bir örnek: “a | ac” a (b | c) 'ye geliştirildi. – xan

6

Sen kullanabilirsiniz:

[1-9]|1[012] 
8

Evet, doğru bir:

[1-9]|1[0-2] 

Aksi takdirde ben gitme eğilimi 10.

+0

Hey, benim düzenlenmiş soruma bakın – Pacerier