所以我花了很多时间在另一个堆栈溢出问题上,同样的问题又出现在上一个问题上。非捕获组并没有像我期望的那样工作,至少我是这么认为的。
这是一个愚蠢的例子,类似于其他人的 CSS 测试字符串......
这是我的正则表达式:
(?:(rgb\([^)]*\)|\S+)(?:[ ]+)?)*
这是测试字符串:
1px solid rgb(255, 255, 255) test rgb(255, 255, 255)
我期待“1px”、“solid”、“rgb(255, 255, 255)”、“test”、“rgb(255, 255, 255)”的匹配组
但我只得到最后一个匹配的令牌。
这是测试的链接:
http://regex101.com/r/pK1uG7 http://regex101.com/r/pK1uG7
这里出了什么问题?我认为我有非捕获组,并且 regex101 底部的解释方式是有道理的,包括“贪婪”。
捕获组会覆盖之前的每个匹配项。捕获组 #1 首先匹配“1px”,然后捕获组 #1 匹配覆盖“1px”的“solid”,然后匹配覆盖“solid”的“rgb(255, 255, 255)”,等等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)