所以我花了很多时间在另一个堆栈溢出问题上,并且前一个问题出现了同样的问题.非捕获组不像我期望的那样工作,或者我相信.
这是一个愚蠢的例子,沿着别人的CSS测试字符串……
这是我的正则表达式:
(?:(rgb\([^)]*\)|\S+)(?:[ ]+)?)*
这是测试字符串:
1px solid rgb(255,255,255) test rgb(255,255)
我期待匹配组“1px”,“solid”,“rgb(255,255)”,“test”,255)”
但我只得到最后一个令牌匹配.
这是测试的链接:
解决方法
捕获组会覆盖每个先前的匹配.捕获组#1首先匹配“1px”,然后捕获组#1匹配“solid”覆盖“1px”,然后匹配“rgb(255,255)”覆盖“solid”等.