-1
我正则表达式巫术的力量是不够的,打这一个:如何重复非捕获组“子查询”?
输入:
x|a=1|b=2,y|c=3|d=4,
(奖励积分,如果你让我放弃最后一个逗号)
期望的匹配(和组):
x|a=1|y=2
(X,A,1,Y,2)
y|c=3|d=4
(Y,C,3,d,4)
(奖金点,如果我可以命名每个组)
我的失败模式:
(x|y|z)(?:\|(.+?)=(.+?))*,
基本上,我想X,Y或Z和所有的 '|'之后分离出'this = that'。
匹配(和组)我得到:
x|a=1|b=2,
(X,B,2)
y|c=3|d=4,
(Y,d,4)
我有逗号在比赛中,但这没什么大不了的,主要问题是我只能得到每场比赛的最后一个“小组”。为什么第一个被忽略?
在.NET中你可以看到重复捕获链接在组[?]。捕获。不要担心,您已经拥有正确的正则表达式,并且可以提取所有数据。顺便说一句,我认为你可以放弃最后的逗号 –
该死的,我没有想到捕获。我想我会改变测试网站... – Kilazur
这是你自己的格式?正如@KovpaevAlexey所说,如果每个子序列都以'[a-z] \ |'开头,那么您就不需要逗号。但如果它是你自己的格式,我会使用JSON或XML代替。或者去全状态机并自己写。但是这基本上再也没有道理了,可悲的说。 –