2个字符之间的Java正则表达式包括换行符或制表符

我在2个字符串之间的正则表达式有问题。我想在string#和之间获取值,#但是当我有新行时(在我的情况下\r\n),此正则表达式不起作用。例如:


#89899#

#this is string I have

problem#

我对第2行有问题,因为有新行。如何在正则表达式中排除换行符?我的代码:


public static List parserStringBetween(String param1, String param2, String data) {

    List result = null;


    if (param1 != null && !"".equalsIgnoreCase(param1) && param2 != null && !"".equalsIgnoreCase(param2)

            && data != null && !"".equalsIgnoreCase(data)) {

        result = new ArrayList<>();

        Matcher m = Pattern.compile("\\" + param1 + "(.*?)\\" + param2).matcher(data);

        while (m.find()) {

            result.add(m.group(1));

        }


    }

    return result;

}

param1和param2是设置之间的字符串,即#这里。如何解决这个问题呢?


炎炎设计
浏览 246回答 2
2回答

红颜莎娜

要同时包含换行符和空格,请使用:^#[\s\S]*#$在这里查看实际情况。您的Java代码变为:Matcher&nbsp;m&nbsp;=&nbsp;Pattern.compile("^"&nbsp;+&nbsp;param1&nbsp;+&nbsp;"[\\s\\S]*"&nbsp;+&nbsp;param2&nbsp;+&nbsp;"$").matcher(data);您也可以使用Pattern.DOTALL模式。Matcher&nbsp;m&nbsp;=&nbsp;Pattern.compile("\\"&nbsp;+&nbsp;param1&nbsp;+&nbsp;"(.*?)\\"&nbsp;+&nbsp;param2,&nbsp;Pattern.DOTALL).matcher(data);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java