You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则匹配所有单词,排除被双引号包裹的内容

可以用双引号计数断言实现差集匹配,不需要复杂的多正则结果计算,单条正则就能完成:

[a-z_]+(?=(?:[^"]*"[^"]*")*[^"]*$)

实现逻辑

  1. 基础匹配部分保留你原来的[a-z_]+,适配你要的小写+下划线的单词规则
  2. 末尾的零宽正向断言用来做过滤:它会统计当前匹配位置之后的双引号数量,如果是偶数,就说明当前匹配的单词不在双引号包裹的区间内,反之则跳过。

匹配效果

对你提供的测试文本:

  • results[0].items[0].packages[0].settings["compiler.version"] 会匹配到:results、items、packages、settings
  • results[0].items[0].packages[0].settings.build_type 会匹配到:results、items、packages、settings、build_type
    完全符合你要排除双引号内内容的要求。

如果你的运行环境支持变长负向后视(Python、Java、ES2018+ JS等环境都支持),也可以用更直白的写法,效果一致:

(?<!".*)[a-z_]+

内容的提问来源于stack exchange,提问作者jlo。

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:24:00