用于解析queryString的正则表达式

rkh*_*khm 2 java regex

您好我正在寻找使用以下正则表达式解析QueryString.Am的正则表达式:

Pattern pr1=Pattern.compile("[\\?&](?<name>[^&=]+)=(?<value>[^&=]+)");
Run Code Online (Sandbox Code Playgroud)

但它的投掷

java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 18
[\?&](?<name>[^&=]+)=(?<value>[^&=]+)
                  ^
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我

anu*_*ava 5

Java <1.7不支持命名组,因此将正则表达式更改为:

Pattern pr1 = Pattern.compile("[\\?&]([^&=]+)=([^&=]+)");
Run Code Online (Sandbox Code Playgroud)

然后从匹配器中获取名称和值的组#1和#2.

更新:

String str =
        "http://test.abc.com/test/http/com/google/www/:/?code=1234&Id=123354455656%22";
Pattern pt = Pattern.compile("[\\?&]([^&=]+)=([^&=]+)");
Matcher m = pt.matcher(str);
if (m.find())
    System.out.printf("name=[%s], value=[%s]%n", m.group(1), m.group(2));
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

name=[code], value=[1234]
Run Code Online (Sandbox Code Playgroud)