正则表达式匹配非空白和&在Java中

时间:2015-05-19 08:01:50

标签: java regex

我有一个请求查询字符串,其中包含带有&&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]*) 匹配非空格,但也没有效果。我该如何解决?

2 个答案:

答案 0 :(得分:1)

我认为您可以使用此正则表达式,以确保在&之后存在非空白字符时,我们会停止将字符用于第2组。

String rx = "&(&.*?)=(.*?)(?=&\\S|$)";

IDEONE Demo

输出:

name 1
name & 2

答案 1 :(得分:0)

您可以使用此基于外观的正则表达式:

(?<=&&|^).*?(?=&&|$)

RegEx Demo