为什么Pattern.MULTILINE不匹配java正则表达式中的新行

时间:2015-02-24 08:49:26

标签: java regex multiline

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

在输出中,缺少回收后的文本。

如何避免这种情况?

2 个答案:

答案 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");