我有一些输出,如下所示:
blat blah垃圾文本在java中,我使用正则表达式将此行转换为普通旧的
00:02:55.34
但它并没有取代顶部和底部的线条。使用这行代码:
String durationString = s.replaceAll(".*Duration: (\\d\\d:\\d\\d:\\d\\d(\\.\\d\\d?)?).*", "$1");
结果如下:
blat blah垃圾文本显然,。*并没有抓住换行符,因为它只替换了同一行上的文字。
答案 0 :(得分:3)
您需要设置dot-all标志:
String durationString = s.replaceAll("(?s).*Duration: (\\d\\d:\\d\\d:\\d\\d(\\.\\d\\d?)?).*", "$1");
答案 1 :(得分:0)
试试这个:
String durationString = s.replaceAll(".*Duration: (\\d\\d:\\d\\d:\\d\\d(\\.\\d\\d?)?).*|.*", "$1");
答案 2 :(得分:0)
您需要使用Pattern.DOTALL标志来说明.
应该与换行符匹配。
或使用(?s)指定模式中的标志,例如
String regex = "(?s).*Duration: (\\d\\d:\\d\\d:\\d\\d(\\.\\d\\d?)?).*";