java - 使用正则表达式处理换行符 Java

标签 java regex newline

我有一些输出,如下所示:

废话废话
更多垃圾文本无关紧要
持续时间:00:02:55.34,开始:0.000000,比特率:4097 kb/s
更多垃圾文本
更多垃圾文本

在java中,我使用正则表达式将这一行变成普通的旧
00:02:55.34
但它并没有取代顶部和底部的线条。使用这行代码:

String durationString = s.replaceAll(".*Duration: (\\d\\d:\\d\\d:\\d\\d(\\.\\d\\d?)?).*", "$1");  

结果如下:

废话废话
更多垃圾文本无关紧要
00:02:55.34
更多垃圾文本
更多垃圾文本

显然,.* 并没有捕获换行符,因为它只替换了同一行上的文本。

  1. 如何让 .* 捕获换行符?
  2. 如果 1. 不可能,假设我不知道顶部和底部有多少行垃圾文本,有什么方法可以满足我的需要吗?

最佳答案

您需要设置点全标志:

String durationString = s.replaceAll("(?s).*Duration: (\\d\\d:\\d\\d:\\d\\d(\\.\\d\\d?)?).*", "$1");  

关于java - 使用正则表达式处理换行符 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5505359/

相关文章:

javascript - 从 javascript 中的任何给定段落中拆分每个字符串

javascript - 匹配除\(\d\) 之外的所有内容

php - Symfony 形式的单选选项之间的换行符 (<br>)

javascript - Node.js : Regex to make sure the string is the first in the line

python ConfigParser : read configuration from string

linux - (BASH)如何在命令中删除默认的 'newline' 运算符

java - 查找 Arraylist 中包含子字符串的所有字符串的有效方法

java.io.FileNotFoundException :/key. p12:打开失败:ENOENT(没有这样的文件或目录)

java - Java 局域网游戏

java - 在 while 表达式中初始化变量 - 而不是语句