我在2个字符串之间的正则表达式有问题。我想在string#和之间获取值,#但是当我有新行时(在我的情况下\r\n),此正则表达式不起作用。例如:#89899##this is string I haveproblem#我对第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是设置之间的字符串,即#这里。如何解决这个问题呢?
2 回答
红颜莎娜
TA贡献1842条经验 获得超12个赞
要同时包含换行符和空格,请使用:
^#[\s\S]*#$
您的Java代码变为:
Matcher m = Pattern.compile("^" + param1 + "[\\s\\S]*" + param2 + "$").matcher(data);
您也可以使用Pattern.DOTALL
模式。
Matcher m = Pattern.compile("\\" + param1 + "(.*?)\\" + param2, Pattern.DOTALL).matcher(data);
添加回答
举报
0/150
提交
取消