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

JavaScript中提取字符串查询NOT块内单词的高效方法

提取查询语句中NOT块内单词的高效实现方法

给定查询语句:

const query = '(travel OR explore OR vacation OR trip) NOT (app OR agency) AND flight';

需要将NOT后括号内的单词提取为数组["app", "agency"],最直接高效的实现方式是利用正则匹配结合字符串分割:

基础实现(适配标准格式)

const query = '(travel OR explore OR vacation OR trip) NOT (app OR agency) AND flight';
// 匹配NOT后括号内的内容
const notBlockMatch = query.match(/NOT \(([^)]+)\)/);
// 分割为数组并处理
const result = notBlockMatch ? notBlockMatch[1].split(' OR ').map(word => word.trim()) : [];
console.log(result); // ["app", "agency"]

逻辑说明

  • 正则/NOT \(([^)]+)\)/精准定位NOT (开头、)结尾的片段,通过捕获组([^)]+)提取括号内的所有内容(排除右括号)。
  • 用split(' OR ')将捕获到的字符串按OR分割为单词列表,trim()处理潜在的空格(确保鲁棒性)。

兼容格式变体的实现

如果查询语句中存在多余空格(比如NOT ( app OR agency )),可以调整正则和分割规则,兼容更多格式:

const query = '(travel OR explore OR vacation OR trip) NOT ( app OR agency ) AND flight';
const notBlockMatch = query.match(/NOT\s*\(([^)]+)\)/);
// 按任意数量空格+OR+任意数量空格分割
const result = notBlockMatch ? notBlockMatch[1].split(/\s+OR\s+/).map(word => word.trim()) : [];
console.log(result); // ["app", "agency"]

效率说明

这种方式性能最优:正则引擎对固定结构的字符串匹配经过深度优化,比手动遍历字符串的逻辑更高效;整体仅需一次匹配+一次分割+简单映射,代码简洁易维护,能覆盖绝大多数常见格式场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:05:23