如何用java中的DOTALL捕获最后一行末尾的所有内容
我有一个字符串,如下所示:如何用java中的DOTALL捕获最后一行末尾的所有内容,java,regex,Java,Regex,我有一个字符串,如下所示: 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
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
Bolus Exposure (Impedance) Total
Total Normal
Acid Time 22.0 min
Acid Percent Time 5.2%
Nonacid Time 6.1 min
Nonacid Percent Time 1.4%
All Reflux Time 28.2 min
All Reflux Percent Time 6.6%
Median Bolus Clearance Time 16 sec
Longest Episode 7.8 min
我试图捕捉这一点的方式是:
Pattern my_pattern = Pattern.compile("Acid Exposure.*?Time pH.*?$",Pattern.DOTALL);
但是我没有运气。我还尝试添加了Pattern.DOTALL | Pattern.MULTILINE
,但也没有运气您可以使用:
Pattern my_pattern = Pattern.compile("Acid Exposure.*?Time pH<[^\\n]*", Pattern.DOTALL);
Pattern my\u Pattern=Pattern.compile(“酸暴露。*?时间pH也可以在*?
因此,不需要使用全局“点全部”修改器
酸暴露(?s:.*)时间pH.
而且,出于某种奇怪的原因,(?s:.*)
比引擎中的[\s\s]*?
快。您使用什么方法,find()
或matches()
?(?s:)
被称为内联修饰符,
肯定比[\s\s]
构造快,因为
是“本机的”“匹配所有构造,[\s\s]
是一个更复杂的“用户定义的”类。我怎样才能做到第二次pH<?你的示例只有一个时间pHI知道。我只是想偷偷地引入一个问题扩展。我真的想问,如果原文中有两个时间pH<,我怎么能从开始匹配到第二个而不是停在第一个呢e第三次直到第二次。是的,可以有第三次
Pattern my_pattern = Pattern.compile("Acid Exposure.*?Time pH<[^\\n]*", Pattern.DOTALL);