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

如何编写正则表达式匹配引号外且排除指定词的单词?

解决方案

你的问题出在原正则没正确跳过引号里的内容,导致引号内的单词被误匹配。要搞定这个需求,我们可以换个思路:先把引号包裹的内容直接排除掉,再在剩下的内容里匹配符合要求的单词。

正确的正则表达式

(?:".*?(?<!\\)"|'[^']*(?<!\\)')(*SKIP)(*FAIL)|\b(?!AND\b|OR\b|NOT\b)\w+

正则拆解

  • 前面的(?:".*?(?<!\\)"|'[^']*(?<!\\)')(*SKIP)(*FAIL):专门处理引号内容,不管是双引号还是单引号(包括里面的转义引号,比如"He said \"Hi\""这种),匹配到后直接标记为无效,不会被捕获。
  • 后面的\b(?!AND\b|OR\b|NOT\b)\w+:在剩下的非引号区域里找单词,同时跳过AND、OR、NOT这三个完整词:
    • \b保证只匹配完整的单词,不会把AND从ANDROID里拆出来。
    • (?!...)是负向前瞻,看到这三个词就直接跳过。
    • \w+匹配字母数字下划线组成的单词,如果需要支持其他字符(比如连字符),改成[a-zA-Z0-9_-]+就行。

测试效果

拿你的测试语句Visualise AND Visionary OR "Experiences Tester" OR (project AND manager)来试,匹配结果正好是Visualise、Visionary、project、manager,完全符合预期。

可选简化

如果你的场景里只有双引号,不用管单引号,可以把正则简化成这样:

(?:"[^"\\]*(?:\\.[^"\\]*)*")(*SKIP)(*FAIL)|\b(?!AND\b|OR\b|NOT\b)\w+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:12:11