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

  • BroadCity

    BroadCity

    10 ŞUBAT 2010
  • Facebook Developers

    Facebook Dev

    24 ŞUBAT 2009
  • newport83

    newport83

    19 HAZİRAN 2006