Regex在regex101正常运行但VSCode中无效,该如何修复?
VSCode正则匹配问题:从Cat到下一个Dog(不含Dog)的解决方法
为什么会有平台差异?
- VSCode的查找框使用正则时,不需要添加
/这类正则分隔符,也不用在末尾写gm这类标志——标志是通过界面按钮来启用的。而regex101这类工具必须用/包裹正则、末尾加标志,直接复制完整内容到VSCode的话,/会被当成要匹配的字符,自然找不到目标内容。 - 另外,虽然VSCode和regex101的JS正则引擎核心一致,但VSCode查找功能的默认选项和regex101有细微区别,比如换行匹配的开关需要手动确认。
怎么让正则在VSCode里正常工作?
- 输入正确的正则内容:先点击查找框左侧的
.*图标切换到正则模式,然后输入不带分隔符和标志的正则:Cat[\s\S]*?(?=Dog) - 开启对应的匹配选项:
- 点击查找框右侧的
Aa图标(对应全局匹配g标志),这样能匹配所有符合条件的片段; - 确认
↵图标(匹配换行符)是开启状态,这个选项能保证正则跨多行匹配(不过[\s\S]本身已经能匹配换行,开了更保险)。
- 点击查找框右侧的
设置完成后,就能精准匹配到每一段从“Cat”开始到下一个“Dog”(不含Dog)的内容了。
内容的提问来源于stack exchange,提问作者Yiffany
相关产品推荐
相关产品推荐

