我知道这已经讨论过很多次了,但是我尝试了很多方法让我的正则表达式从多行读取信息,但没有一个有效。这是我正在尝试做的事情:
我有一个文本文件。里面写着:
Description1 This is a test description. Yay. Description2
正则表达式 (?<=Description1\\s).*(?=\\sDescription2)
按预期返回所有文本,但不包括“Description1”和“Description2”。
但是,即使中间的文本由另一行分隔,我也需要能够执行相同的操作。就像这样。
Description1 This is a
test description. Yay. Description2
我已经尝试了所有我能找到的东西,从 Pattern.MULTILINE
标志,至Pattern.DOTALL
,添加(?s)
到开头,添加 [/r/n]
,似乎没有任何作用。
任何帮助将不胜感激。这是迈向更大的个人项目的一小步。
最佳答案
这应该有效
(?s)(?<=Description1\\s).*?(?=\\sDescription2)
^ ^
<小时/>
(?s)
会使 .
匹配换行符
.*?
会惰性匹配..即它会尽可能少地匹配..这是因为使用 .*
你会结束匹配直到最后一个 Decription2
关于Java 正则表达式和多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19122068/