javascript 正则表达式组为什么我得到前导空白?
javascript regex group why do I get leading blanks?
当将“产品名称 cat1”与此正则表达式匹配时,我得到带有前导空格的“产品名称”,当然我可以 trim in javascript 但是有没有办法修改正则表达式不抓住那个空白?
(product)((\s+)(.(?!cat1|cat2))+)
您可以使用
(product)(\s+)((?:(?!cat1|cat2).)+)
参见regex demo。
注:
- 千锤百炼贪心令牌已修复,详见
- 捕获组 2 左边界移动到
(\s+)
之后。
另一种看待它的方法是在单个捕获组中使用非贪婪量词 (.*?)
,如果您只对 product name
[=14= 感兴趣,则匹配 cat1 或 cat2 ]
\bproduct\s+(.*?)\s+cat[12]\b
当将“产品名称 cat1”与此正则表达式匹配时,我得到带有前导空格的“产品名称”,当然我可以 trim in javascript 但是有没有办法修改正则表达式不抓住那个空白?
(product)((\s+)(.(?!cat1|cat2))+)
您可以使用
(product)(\s+)((?:(?!cat1|cat2).)+)
参见regex demo。
注:
- 千锤百炼贪心令牌已修复,详见
- 捕获组 2 左边界移动到
(\s+)
之后。
另一种看待它的方法是在单个捕获组中使用非贪婪量词 (.*?)
,如果您只对 product name
[=14= 感兴趣,则匹配 cat1 或 cat2 ]
\bproduct\s+(.*?)\s+cat[12]\b