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

  • 07cadikiz07

    07cadikiz07

    17 EKİM 2007
  • Autocar

    Autocar

    11 Mart 2006
  • TomOdellVEVO

    TomOdellVEVO

    29 Mayıs 2012