我正在尝试匹配(一次或两次)固定|本地|滚动的任何实例 但我不想捕捉尾随空间。我以为我通过放入(?:... \ s *)来解决这个问题,但它仍在捕捉那个尾随空间。
例如:
这是我的正则表达式:
((?:(?:fixed|local|scroll)\s*){1,2})
这是字符串:
background: url("my image.jpg") left right 2px 50% 75% repeat scroll border-box padding-box;
以下是比赛:
`scroll `
预期:
`scroll`
顺便说一下,我使用以下网站测试我的正则表达式:
答案 0 :(得分:2)
在您提供的正则表达式中,最外层组是唯一的捕获组,其中包含\s*
。
你可以尝试这样一些更长的东西:
(fixed|scroll|local)(\s+(fixed|scroll|local))?
出现(fixed|scroll|local)
后跟一个可选的出现。像这样复制它会使事情变得更容易,因为它允许你说“空格在匹配之间有效但不在之后”。
另一种选择就是使用trim来以编程方式处理尾随空格。
答案 1 :(得分:1)
你可以这样做:
\s*((?:\s*?\b(?:fixed|local|scroll)\b){1,2})
或
\s*((?:\s*?(?:fixed|local|scroll)){1,2})
(如果不需要字边界)
说明:由于\s*
默认为贪婪,因此所有前导空格都会在catpure组之前被“吃掉”。