(?m)^truck(?:(?:\r\n|[\r\n]).+$)*
Bütün bu metni kabul gibi dotall modunda şey derlenmiş gerektiğini düşünüyoruz yani sen 'bir dosya satır-hattı okumayan'), ancak , kod satırınızın her zaman \n
olduğunu varsayıyor. En azından \r\n
ve \r
için de (?:\r\n|[\r\n])
'un yaptığı gibi izin vermelisiniz. Ama yine de sadece bir ayırıcı ile eşleşiyor, bu yüzden maç blokun sonunda çift hat ayırıcıdan önce durur.
Bir veri bloğuyla eşleştirdiğinizde, tek tek satırları almak için onu satır ayırıcılarına ayırabilirsiniz. İşte bir örnek:
Pattern p0 = Pattern.compile("(?m)^truck(?:(?:\r\n|[\r\n]).+$)*");
Matcher m = p0.matcher(data);
while (m.find())
{
String fullMatch = m.group();
int n = 0;
for (String s : fullMatch.split("\r\n|[\r\n]"))
{
System.out.printf("line %d: %s%n", n++, s);
}
}
çıkışı: Ben de her veri satırı farz ediyorum
line 0: truck
line 1: zDoug
line 2: Doug's house
line 3: (123) 456-7890
line 4: [email protected]
line 5: 30
line 6: 61234.56
line 7: 8/10/2003
en az bir karakter içerir ve veri bloğu arasındaki boş satırlar gerçekten boş olduğunu - yani boşluksuz , SEKMELER veya diğer görünmez karakterler.
(BTW:. (?m)
kaldırmak ve bunun yerine RegExr ActionScript tarafından desteklenmektedir multiline
kutuyu, yani kurallar biraz farklı, RegExr o regex test etmek bir Java Destekli regex test için göz atın. RegexPlanet.) Eğer çizgi ile giriş hattını okumak gerekiyorsa
çalışması gerekir? –
@nikita Yeni satırlar içeren gruplar oluşturmak istiyorum çünkü – lampShade