SORU
6 EYLÜL 2010, PAZARTESİ


Çok Satırlı Metin eşleşen düzenli ifade kullanarak

Çoklu satır metin java kullanarak eşleştirmeye çalışıyorum. Pattern.MULTILINE değiştirici Pattern sınıf kullandığımda, maç için mümkün duyuyorum, ama bu kadar (?m). ile bunu yapmak mümkün değilim

(?m) kullanarak String.matches ile aynı desen çalışmak için görünmüyor.

Bir şey, ama hiçbir fikri ne eksiğim var eminim. Düzenli ifadeler de Aram iyi değil,

Bu çalıştığım şey buydu

String test = "User Comments: This is \t a\ta \n test \n\n message \n";

String pattern1 = "User Comments: (\\W)*(\\S)*";
Pattern p = Pattern.compile(pattern1, Pattern.MULTILINE);
System.out.println(p.matcher(test).find());  //true

String pattern2 = "(?m)User Comments: (\\W)*(\\S)*";
System.out.println(test.matches(pattern2));  //false - why?

CEVAP
6 EYLÜL 2010, PAZARTESİ


İlk olarak, yanlış bir varsayım altında değiştiriciler kullanıyorsun.

Pattern.MULTILINE (?m) söyler Java için kabul çapa ^ $ maç başlangıç ve bitiş her satırı (aksi takdirde sadece maç başlangıç/bitiş tüm dize).

Pattern.DOTALL (?s) Java nokta yeni satır karakterleri maç için de izin söyler.

İkincisi, senin durumunda normal ifade, normal ifade eşleşme bekliyor matches() yöntemi kullanıyorsun çünkü başarısız olurtümelbette bazı karakterler (\\W)*(\\S)* sonra sol olmadığından çalışmıyor hangi dize eşleşiyor.

Eğer öyleyse sadece User Comments: ile başlayan bir dize arıyorsan normal ifade kullanın

^\s*User Comments:\s*(.*)

Pattern.DOTALL seçenek: ile

Pattern regex = Pattern.compile("^\\s*User Comments:\\s (.*)", Pattern.DOTALL);
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    ResultString = regexMatcher.group(1);
} 

ResultString User Comments: sonra metin içerir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Just So

    Just So

    3 HAZİRAN 2007
  • kalabrandmusic

    kalabrandmus

    25 Kasım 2009
  • xXGAMERrs_Xx

    xXGAMERrs_Xx

    31 Temmuz 2014