enter code here
我不明白如何使用简单的正则表达式捕获多行:
Pattern pattern2 = Pattern.compile("^.*$", Pattern.MULTILINE);
matcher = pattern
.matcher("11-41 pm, Oct 20, 2014 - Stef G: Ik zal er ook zij \n ttrrttttkkk");
matcher.find();
System.out.println("group=" + matcher.group());
输出:
group=11-41 pm, Oct 20, 2014 - Stef G: Ik zal er ook zij
在输出中,缺少回收后的文本。
如何避免这种情况?
答案 0 :(得分:2)
DOTALL选项绝对适用于您:
Pattern pattern2 = Pattern.compile("^.*$", Pattern.DOTALL);
但如果由于某种原因它没有,你可以在实际表达式中指定选项,如下所示:
Pattern pattern2 = Pattern.compile("(?s)^.*$");
答案 1 :(得分:0)
我认为这主要的共鸣是你在正则表达式中使用$
符号,因为它表示字符串的结尾,或者如果启用了多行,则表示结束线。因此,您只需在字符串的开头找到文本,直到匹配文本中的第一行结束。
我认为^.*$
形式的正则表达式根本不是很有用。你想要实现什么目标?选择全文 - 请使用.*
。如果您想从第二行获取一些文本,请尝试执行此操作:
^.*$.*$
或尝试将文字设为splitted by newline char:
String lines[] = String.split("\\r?\\n");