2012-02-29 19 views
5

Bu desen var:Java Negatif sayılar için düzenli ifade?

Pattern.compile("T([0-9]*)");

pozitif sayılar için çalışıyor ama çalışması gerekir Örneğin "T-1T3T44" için negatif sayılar da yapmak gerekir. Veya belki de 'T' yerine boşluk kullanın, bu yüzden bu gibi dizeler için çalışmalıdır: "- 1 2 3 2 -1 6 2". Üzgünüm, daha önce normal ifadeler kullanmıyorum. Herhangi bir öneriniz var mı? Teşekkürler.

+0

http://regexlib.com/DisplayPatterns.aspx?cattabindex=2&categoryId=3 – vulkanino

+0

Üzgünüz, cevabım yerine T. – Fofole

cevap

5

Eğer çalışmakla düşündünüz mü:

"T(-?[0-9]+)" 

Sen de "" beri "+" (bir veya daha fazla) "*" (sıfır veya daha fazla) değiştirdik fark edeceksiniz teknik olarak bir sayı değil: -)

+1

yerine cevabımı düzenledim Bu, aşağıdaki gibi oldukça doğru değil: -0. Sıfır negatif olamaz. Bununla nasıl başa çıkacağımı görmek için cevabımı görün. – Lukasz

+0

@Fofole: evet, sadece regex bir boşluk ile değiştirin, sorun yok. Lukasz, evet, negatif sıfıra izin vermek istemiyorsanız, daha karmaşık bir şeye ihtiyacınız olacak. Şahsen, sanırım bu anal-kalıcı aşamaya yaklaşıyor ama senin bakış açısını görüyorum :-) – paxdiablo

+0

Teşekkürler. Bu daha kolay anlaşılır ve dizeyi doğru şekilde oluşturduğum için -0'ı kontrol etmem gerekmiyor, bu yüzden kabul edilen yanıt olarak bunu işaretliyorum. Umarım herkes bundan memnun olur. – Fofole

1
Pattern.compile("T-?([0-9]*)"); 
3

ile deneyin:

Pattern.compile("T(-?[0-9]*)"); 
1

M eksi isteğe bağlı olabilir?

T - ([0-9] *)

9
Pattern.compile("T(-{0,1}(?!0)\\d+)"); 

hariç tutmak için negatif bir görünüm yeşil ışık (?!0) kullanımını unutmayın -0 numarası ve 0. ile başlayan numaralar