Java正则表达式从url字符串中的函数中提取param

时间:2018-04-06 14:45:49

标签: java regex

我的字符串类似于:

http://url:port?param1=foo&param2=EDIT[a,b]&param3=fuu&param4=EDIT[c,33]

我需要一个正则表达式来提取:

http://url:port?param1=foo&param2=
a
b
&param3=fuu&param4=
c
33

对于EDIT []的单次重复,我可以使用这个正则表达式:

(.*)EDIT\\[(.+)\\,(.+)\\](.*)

但我无法找到一个可以无限次重复的工作。类似的东西:

((.*)EDIT\\[(.+)\\,(.+)\\](.*)){1,}

1 个答案:

答案 0 :(得分:0)

一种解决方案是使用<Route ...>符号使非常通用的选择器非贪婪。在当前版本中,?.+会抓取超出必要的字符数,因此他们会消耗第二个.*

正则表达式:

EDIT

看到它的实际效果:https://regex101.com/r/PuL3SW/1

编辑:根据评论,如果需要捕获网址的最后一部分,你可以使用另一种选择(第二次编辑:我还删除了从未捕获任何内容的第4个捕获组(.*?)EDIT\[(.+?)\,(.+?)\](.*?) ,注意:你可以始终确保最后一次捕获(.*?)将是您网址的结尾,因为之前已经捕获了(.+)之前的任何内容:

EDIT

在此处更新了正则表达式:https://regex101.com/r/PuL3SW/4