我想匹配一些分组的东西,但也要用逗号分隔.我需要他们不要再重复.我以为我知道了,但当事情开始变得奇怪时,我决定问问.这些搜索项目是超级简化的,因为在真实的搜索中,有各种各样的特定字符和单词,以及特殊字符和转义字符.这就是为了让这个例子可以被用来询问.
`{A=1,B=2,C=3}`
`{B=2,A=1,C=3}`
`{C=3,B=2,A=1}`
这就是我所try 的:
^\{(?:(?:A=1,?)()|(?:B\=2,?)()|(?:C\=3,?)()){3}\1\2\3\}$
这使用一些非捕获组,然后是空的捕获组,以处理唯一性.我不确定这是不是正确的做法,因为这感觉更像是一个客厅把戏,但这是我能找到的让我走到这一步的东西.
如果它们的顺序不同,则会成功
`{B=2,A=1,C=3}`
它不匹配重复项(因为它不应该匹配)
{A=1,B=2,A=1}
个
遗憾的是,当逗号丢失时,它将匹配(不是预期的).
{A=1B=2C=3}
个
我确实知道,?
要么得到逗号,要么没有逗号,但在这种情况下,如果没有最后一个逗号,我就不知道怎么做了.尤其是以这种奇怪的方式配对的时候.