Java 正则表达式和多行

标签 java regex

我知道这已经讨论过很多次了,但是我尝试了很多方法让我的正则表达式从多行读取信息,但没有一个有效。这是我正在尝试做的事情:

我有一个文本文件。里面写着:

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/

相关文章:

java - Spark在java中提交(SparkLauncher)

特定文本后的 javascript 正则表达式

java - 正则表达式插入符号和符号有效,但不知道为什么

php - 正则表达式的正则表达式?

java - 将 128 位数组优化打包成一个数字

java - 将 AndroidKeyStoreRSAPrivateKey 转换为 RSAPrivateKey 时发生崩溃

java - 如何检查数组是否包含数字

java - 如果从一个类调用该方法,但从另一个类调用则该方法无效

python - RegEx Python - 我想编写 RegEx,通过它我可以将 { expression } 替换为 {% print expression %}

php - 正则表达式匹配列表中的字符,除非存在另一个列表中的字符