我使用正则表达式在两个字符串之间查找字符串
代码:
Pattern pattern = Pattern.compile("EMAIL_BODY_XML_START_NODE"+"(.*)(\\n+)(.*)"+"EMAIL_BODY_XML_END_NODE");
Matcher matcher = pattern.matcher(part);
if (matcher.find()) {
..........
它适用于文本,但是当文本包含特殊字符(如换行符)时,它会中断
答案 0 :(得分:3)
您需要编译模式,以便.
匹配行终结符。为此,您需要使用DOTALL
标志。
Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
编辑:抱歉,我遇到这个问题已经有一段时间了。您还必须将中间正则表达式从(.*)(\\n+)(.*)
更改为(.*?)
。如果您有多个*?
元素,则需要延迟量词(EMAIL_BODY_XML_START_NODE
)。否则,正则表达式将匹配第一个元素的开头与最后一个元素的结尾,而不是为每个元素分别匹配。虽然我猜你不太可能出现这种情况。