从布尔查询中提取值

Extract values from Boolean Query

提问人:Bhavesh Kale 提问时间:5/4/2022 更新时间:5/5/2022 访问量:109

问:

我想从布尔查询中提取值/变量 例如,对于

布尔查询为:

(“资产数据管理”)和“数据科学家”和(“数据科学与分析”或“金融建模”或“信贷结构”)和(“高盛”或“德意志银行”或“纽约梅隆银行”或“摩根大通”或贝莱德或亚马逊)

预期输出必须为:

[“资产数据管理”,“数据科学家”,“数据科学与分析”,“金融建模”,“信贷结构”,“高盛”,“纽约梅隆银行”,“摩根大通”,“贝莱德”,“亚马逊”]

JavaScript 数组 字符串 拆分 boolean-logic

评论

0赞 Bhavesh Kale 5/4/2022
这就是我得到的结果 [ '资产数据管理', '数据科学家', '数据科学与分析', '金融建模', '信贷结构', '高盛', '德意志银行', '纽约梅隆银行', '摩根大通', '数据', '科学', '&', '贝莱德', '亚马逊']
0赞 Rohìt Jíndal 5/5/2022
在您预期的输出中,我可以看到所有数据。那么 和 和有什么不一样呢?ANDOR
0赞 Bhavesh Kale 5/5/2022
我只想要所有的变量和单词都期望 OR AND 以及所有运算符
0赞 Rohìt Jíndal 5/5/2022
明白了!我添加了一个答案。希望这能按照您的期望工作。

答:

0赞 Rohìt Jíndal 5/5/2022 #1

您可以通过使用正则表达式执行字符串 split() 和 replaceAll() 操作来简单地实现这一点。

/AND|OR/g- 此正则表达式用于将原始字符串与 和 拆分,并将返回数组。ANDOR

/"|\(|\)/ig- 此正则表达式用于将所有 , & 替换为空字符串。()"

工作演示

const str = '("Asset Data Management") AND "Data Scientist" AND ("Data Science & Analysis" OR "Financial Modelling" OR "Credit Structuring") AND ("Goldman Sachs" OR "Deutsche Bank" OR "BNY Mellon" OR "JP Morgan" OR BlackRock OR Amazon)';

const strArr = str.split(/AND|OR/g);

const finalArr = strArr.map(elem => {
    return elem.trim().replaceAll(/"|\(|\)/g, '')
});

console.log(finalArr);