我需要根据跟随字符串创建一个包含键值对的字典(youtube info_videos):
状态= OK&安培; use_cipher_signature =假&安培; allow_ratings = 1&安培; iurlmaxres = HTTP%3A%2F%2Fi.ytimg.com%2Fvi%2F5MwJobjESqw%2Fmaxresdefault.jpg&安培; allow_embed用于= 1&安培;水印=%2Chttp%3A%2F% 2Fs.ytimg.com%2Fyts%2Fimg%2Fwatermark%2Fyoutube_watermark-vflHX6b6E.png%2Chttp%3A%2F%2Fs.ytimg.com
问题是我的正则表达式不能一直运行:
String pattern = "&(.+?)=(.+?)&.+?";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(decodedUrl);
Multimap<String, String> map = HashMultimap.create();
while(m.find()) {
map.put(URLDecoder.decode(m.group(1), "UTF-8"), URLDecoder.decode(m.group(2), "UTF-8"));
}
我在java中需要帮助我的正则表达式。
答案 0 :(得分:1)
您可以使用以下正则表达式。
(?:^|&)([^=]+)=([^&]+)
答案 1 :(得分:1)
答案 2 :(得分:0)
我想你想要这样的东西,
&(.+?)=(.+?)(?=&|$)
上述正则表达式将捕获两个独立组中的键值对。假设一个密钥必须以&
符号开头,并且该值必须后跟&
或行锚点的结尾。使用前瞻检查值是否后跟&
或$
。
如果您想捕获第一个status=ok
键值对,请尝试以下正则表达式,
(?<=&|^)(.+?)=(.+?)(?=&|$)
答案 3 :(得分:0)