2

我正在使用正则表达式在两个字符串之间查找字符串

代码:

        Pattern pattern = Pattern.compile("EMAIL_BODY_XML_START_NODE"+"(.*)(\\n+)(.*)"+"EMAIL_BODY_XML_END_NODE");
        Matcher matcher = pattern.matcher(part);
        if (matcher.find()) {
                      ..........

它适用于文本,但当文本包含特殊字符(如换行符)时,它会中断

4

1 回答 1

3

您还需要编译模式以.匹配行终止符。为此,您需要使用DOTALL标志。

Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);

编辑:对不起,我已经有一段时间没有遇到这个问题了。您还必须将中间正则表达式从更改(.*)(\\n+)(.*)(.*?). *?如果您有多个EMAIL_BODY_XML_START_NODE元素,则需要惰性量词 ( )。否则,正则表达式将匹配第一个元素的开头与最后一个元素的结尾,而不是为每个元素单独匹配。虽然我猜这对你来说不太可能。

于 2012-05-10T14:39:14.270 回答