您正在寻找使用以下正则表达式解析QueryString.Am的正则表达式:
Pattern pr1=Pattern.compile("[\\?&](?<name>[^&=]+)=(?<value>[^&=]+)");
但它的投掷
java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 18
[\?&](?<name>[^&=]+)=(?<value>[^&=]+)
^
任何人都可以帮助我
答案 0 :(得分:5)
Java&lt; 1.7不支持命名组,因此请将正则表达式更改为:
Pattern pr1 = Pattern.compile("[\\?&]([^&=]+)=([^&=]+)");
然后从匹配器中获取名称和值的组#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));
<强>输出:强>
name=[code], value=[1234]
答案 1 :(得分:0)
我不知道你要用"%5b^&=%5d+">
完成什么。听起来像是抱怨>
。这有助于:http://stevenbenner.com/2010/03/javascript-regex-trick-parse-a-query-string-into-an-object/
答案 2 :(得分:0)
Lookbehind表达式必须查找固定长度的字符串。你不能使用*等正则表达式功能? +里面的lookbehind断言。
(?<name>[^&=]+)
是由&#39;?&lt;&#39;表示的后视镜。它包含一个&#39; +&#39;。也许您想要评论&#39;&lt;&#39;?