我尝试获取<%=和%>之间的字符串,这是我的实现:
String str = "ZZZZL <%= dsn %> AFFF <%= AFG %>"; Pattern pattern = Pattern.compile("<%=(.*?)%>"); String[] result = pattern.split(str); System.out.println(Arrays.toString(result));
它返回
[ZZZZL , AFFF ]
但我的期望是:
[ dsn , AFG ]
我在哪里错了以及如何纠正它?
您的模式很好。但是,您不应该split()轻信它,应该find()这样做。以下代码提供了您正在寻找的输出:
split()
find()
String str = "ZZZZL <%= dsn %> AFFF <%= AFG %>"; Pattern pattern = Pattern.compile("<%=(.*?)%>", Pattern.DOTALL); Matcher matcher = pattern.matcher(str); while (matcher.find()) { System.out.println(matcher.group(1)); }