我有一个长字符串,格式为:
如何在<DETAIL>
和</TEXT>
之间提取数据,请注意它不是xml文件。每个结局后都会有一个新行。我尝试了以下方法:
Pattern pattern = Pattern.compile("<DETAIL>(.*?)</TEXT>");
Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
它给我空值,任何人都可以帮忙吗?提前谢谢。
答案 0 :(得分:5)
默认情况下,.
与换行符不匹配。
使用s
标记(DOTALL
)使.
与换行符匹配。
Pattern pattern = Pattern.compile("(?s)<DETAIL>(.*?)</TEXT>");
或
Pattern pattern = Pattern.compile("<DETAIL>(.*?)</TEXT>", Pattern.DOTALL);
答案 1 :(得分:0)
尝试[\s\S]*?
代替.*?
。 .
与新行不匹配。