两个字符串之间的模式在java中

时间:2014-01-16 17:35:19

标签: java regex

我有一个长字符串,格式为:

enter image description here

如何在<DETAIL></TEXT>之间提取数据,请注意它不是xml文件。每个结局后都会有一个新行。我尝试了以下方法:

Pattern pattern = Pattern.compile("<DETAIL>(.*?)</TEXT>");
    Matcher matcher = pattern.matcher(string);
    while (matcher.find()) {
        System.out.println(matcher.group(1));
    }

它给我空值,任何人都可以帮忙吗?提前谢谢。

2 个答案:

答案 0 :(得分:5)

默认情况下,.与换行符不匹配。

使用s标记(DOTALL)使.与换行符匹配。

Pattern pattern = Pattern.compile("(?s)<DETAIL>(.*?)</TEXT>");

Pattern pattern = Pattern.compile("<DETAIL>(.*?)</TEXT>", Pattern.DOTALL);

答案 1 :(得分:0)

尝试[\s\S]*?代替.*?.与新行不匹配。