如何用正则分组捕获多个格式相同的子串?

docici 发布于 2013/09/10 09:21
阅读 317
收藏 0

例如要匹配的字符串为:

data=",white=9,black=2,red=0"
忽略data中的空白符, 其格式符合",表示颜色的单词=一个或多个数字", 理解为颜色"键-值对", 这些键值对可以有个0个或多个, 无先后顺序要求, 但每一对都要求捕获; 为求简单,假定颜色限定为white,black,red3种,求匹配data的正则表达式.

我试着写了几个:

regex1 = "(,white=[0-9]+)?(,black=[0-9]+)?(,red=[0-9]+)?"

regex2="(,(?:white|black|red)=[0-9]+)+"

regex1可以正确捕获但对颜色出现的顺序有要求; regex2也可以正确匹配(再结合判断data是否为空)但只能捕获第一个分组.

小弟不才,请高手指点!谢谢!


加载中
0
Lax
Lax
要实现什么功能?
0
docici
docici

引用来自“Lax”的答案

要实现什么功能?
比如用户输入一些类似上面的键值对, 我要解析键值对的内容
返回顶部
顶部