Nasıl bir dize Java tek rakam varsa kontrol etmek için
String sınıfı Java'da eğer benim dize tek haneli düzenli ifade kullanarak, sahip yöntemini kontrol etmek için bu yöntemi kullanmak nasıl maçlar denir. Örnekler ile aşağıda denedim, ama her ikisi de bana sonuç olarak yanlış döndü.
String regex = "[0-9]";
String data = "23343453";
System.out.println(data.matches(regex));
String regex = "^[0-9]";
String data = "23343453";
System.out.println(data.matches(regex));
CEVAP
Deneyin
String regex = "[0-9] ";
ya
String regex = "\\d ";
Java başı olarakdüzenli ifadeler,
"anlamına gelir, bir veya daha fazla kez" ve \d
anlamı, "bir rakam".
Not:" dir . eğik çizgi "çift ^em>çıkış sırasıtek bir ters eğik çizgi, bu yüzden \\d
Dize verir bir java için gerçek sonuç: \d
Referanslar:
Java Character Escape Sequences
Düzenleme:diğer cevaplar içinde bazı karışıklıklar nedeniyle, bir test durumu yazıyorum ve bazı açıklayacak daha fazla ayrıntı şeyler.
Öncelikle, eğer bu çözümün doğruluğu (veya diğerleri) hakkında şüpheniz varsa, lütfen bu sınama durumu çalıştırın:
String regex = "\\d ";
// positive test cases, should all be "true"
System.out.println("1".matches(regex));
System.out.println("12345".matches(regex));
System.out.println("123456789".matches(regex));
// negative test cases, should all be "false"
System.out.println("".matches(regex));
System.out.println("foo".matches(regex));
System.out.println("aa123bb".matches(regex));
Soru 1: Bu maç olmayacak yani normal ifade için ^
$
eklemek için gerekli"" ? aa123bb Değil
Hayır.Java, matches
yöntemi soruda belirtildi) tam bir dize, parçaları olmayan maçlar. Diğer bir deyişle, gerekli ^\\d $
ayrıca doğru olsa bile () kullanmaya gerek yoktur. Son negatif test durumuna bakın.
Lütfen "düzenli ifade denetleyicisi" o zaman bu farklı davranabilir. bir online kullanıyorsanız unutmayın Java'da bir string parçaları eşleştirmek için find
yöntemi kullanın, burada detaylı olarak nitelendirdi
Difference between matches() and find() in Java Regex
Soru 2: Bu normal ifade boş dize ""
uyuşmuyordur.
Hayır.Bir düzenli ifade \\d*
boş dize maç olur, ama \\d
gelmez. *
yıldız anlamına gelir veya daha fazla, artı ise
anlamına gelir, bir veya daha fazla sıfır. İlk negatif test durumuna bakın.
Soru 3: Bu normal ifade Deseni derlemek için daha erken Değil mi?
Evet.Kesinlikle daha hızlı derlemek için bir düzenli ifade Deseni bir kez yerine her çağırma matches
, ve eğer öyleyse performans etkileri olan önemli bir Pattern
olabilir derlenen ve eskiden olduğu gibi bu
Pattern pattern = Pattern.compile(regex);
System.out.println(pattern.matcher("1").matches());
System.out.println(pattern.matcher("12345").matches());
System.out.println(pattern.matcher("123456789").matches());
Nasıl bir Dize Java sayısal bir tip ol...
Nasıl bir dosya belirli bir dize bash ...
Java nasıl Dize tüm boşluklar olduğunu...
Nasıl bir dize kontrol etmek için java...
Bir dize kontrol etmek için nasıl &quo...