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

时间:2012-05-10 14:33:48

标签: java regex

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

代码:

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

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

1 个答案:

答案 0 :(得分:3)

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

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

编辑:抱歉,我遇到这个问题已经有一段时间了。您还必须将中间正则表达式从(.*)(\\n+)(.*)更改为(.*?)。如果您有多个*?元素,则需要延迟量词(EMAIL_BODY_XML_START_NODE)。否则,正则表达式将匹配第一个元素的开头与最后一个元素的结尾,而不是为每个元素分别匹配。虽然我猜你不太可能出现这种情况。