我有一个请求查询字符串,其中包含带有&
(&name
)的参数名称,因为在请求查询字符串中,参数也以&
分隔,然后变量名称为{{1} }。我写了regexp,应该返回参数值
&&name
因此,当请求字符串具有以下构造时,regexp工作正常:
Matcher matcher = Pattern.compile("&(&[^=]+)=([^&]*)").matcher(str);
while (matcher.find()) {
String value = matcher.group(2);
System.out.println(value);
}
输出结果为:
String str = "&&NAME=name 1&&NAME=name 2&type=1";
但是当字符串具有以下结构时
name 1
name 2
输出结果为:
String str = "&&NAME=name 1&&NAME=name & 2&type=1";
我试过了:
name 1
name
&(&[^=]+)=([^\\S&\\S]*)
匹配非空格,但也没有效果。我该如何解决?
答案 0 :(得分:1)
我认为您可以使用此正则表达式,以确保在&
之后存在非空白字符时,我们会停止将字符用于第2组。
String rx = "&(&.*?)=(.*?)(?=&\\S|$)";
输出:
name 1
name & 2
答案 1 :(得分:0)