如何使用Java中的DOTALL捕获所有内容到最后一行的结尾

时间:2016-04-27 18:39:35

标签: java regex

我有一个字符串如下:

Acid Exposure

我希望捕获从Time pH<Time pH<的所有内容,包括Acid Exposure (pH) Total Total Normal Clearance pH : Channel 7 Number of Acid Episodes 26 Time 31.5 min Percent Time 7.4% Mean Acid Clearance Time 73 sec Longest Episode 7.1 min Gastric pH : Channel 8 Time pH<4.0 425.9 min 行中的所有内容,以便我最终得到:

Pattern my_pattern = Pattern.compile("Acid Exposure.*?Time pH.*?$",Pattern.DOTALL);

我试图捕获这个的方式是:

Pattern.DOTALL|Pattern.MULTILINE

但我没有运气。我也试过添加function但也没有运气

2 个答案:

答案 0 :(得分:2)

您可以使用:

Pattern my_pattern = Pattern.compile("Acid Exposure.*?Time pH<[^\\n]*", Pattern.DOTALL);
[^\n]*之后的

Time pH<将匹配到行尾。

RegEx Demo

答案 1 :(得分:1)

也可以使用围绕.*?的群集中的dot-all修饰符来完成 因此,您不需要使用全局 dot-all修饰符。

Acid Exposure(?s:.*?)Time pH.*

并且,由于某些奇怪的原因(?s:.*?)比引擎中的[\S\s]*?快。