java

2013-05-16 16 views
5

alt çizgi ile dize adı denetlemek için Normal ifade ifade java regex ifadeleri yeniyim. Dosya adının şu formatta update_9_0_27 biçiminde olup olmadığını nasıl kontrol ederim? [0-9][\\_][0-9][\\_][0-100] gibi bir şey mi?java

+1

Biçiminizi daha fazla tarif edebilir misiniz? 'Update' formatın bir parçası mı? Sadece 9_0_27 için regex oluşturmaya çalıştığınız için soruyorum. – Pshemo

+1

"\\ w +' yeterli olmaz mı? aksi halde, [a-zA-Z] + _ \\ d _ \\ d_ [01]? \\ d {1,2} 'kullanın. – HamZa

+0

@Pshemo yes update, dosya adının bir parçasıdır. – MindBrain

cevap

6

şu çalışmalıdır: Bir dize yalnızca bir kısmını maç olmayacak şekilde

^[a-zA-Z]+_\d_\d_\d{1,2}$ 

^ ve $ dize çapalar başlıyor. Her bir \d, tek bir basamakla eşleşecek ve son \d'dan sonraki {1,2} "bir ve iki basamak (dahil)" arasında eşleşme anlamına gelir.

dosya adının update kısmı daima sabittir, o zaman aşağıdaki kullanmalısınız: Java dizede bu regex oluştururken her ters eğik çizgi kaçış gerekir, bu yüzden olacağını

^update_\d_\d_\d{1,2}$ 

Not dize "^update_\\d_\\d_\\d{1,2}$" gibi bir şey görünecektir.

+0

Hayır. Java'da çift ters eğik çizgi gerekir;) – ddmps

+2

Sadece açıklığa kavuşturmak için cevabımı ekledim, ancak normal ifadeler istendiğinde, bunu istemedikleri sürece regex motoru tarafından beklenen formatta vermenin daha mantıklı olduğunu düşünüyorum. belirli bir dilde kod. –

2

Rakam konumları sabit mi, örn. 1-1-2? Java dize Kullanılan

^update\_\d\_\d\_\d\d$ 

, sıfır-bir, altını ters eğik çizgi

"^update\\_\\d\_\\d\\_\\d\\d$" 

[0-9][\\_][0-9][\\_][0-100] ederek, tek haneli, alt çizgi tek haneli kastediyorsan

kaçmak gerekiyordu -hundred ve bu dizi daha sonra, dize herhangi bir yerde geçebilir

şimdi belirtmek için \_ alternatif olarak [_] kullandık
".*[0-9][_][0-9][_](100|[1-9][0-9]|[0-9]).*" 

Bildirimi basit bir alt çizgi oluşturuluyor. Son kısım, özellikle 0-100 için test eder.