gpt4 book ai didi

javascript - 正则表达式使用javascript获取多个模式之间的匹配文本

转载 作者:行者123 更新时间:2023-11-28 02:06:26 24 4
gpt4 key购买 nike

假设我有以下字符串:

KEYWORD_1 OR "KEYWORD COMPOSITE_2" NOT "KEYWORD COMPOSITE_3" NOT "KEYWORD_4" AND "KEYWORD_5" KEYWORD_6 KEYWORD_7 KEYWORD_8 -KEYWORD_9

我想用我的正则表达式得到的结果(这不是 JSON 格式,只是一种解释输出的视觉格式)是将字符串拆分为以下三个关键字数组,每个数组对应一个分隔符(AND、OR、NOT)并包含该分隔符每次出现后的所有单词。把它想象成谷歌搜索字段语法:):

final_result = {
{
OR: [KEYWORD_COMPOSITE_2]
},
{
AND: [
KEYWORD_1,
KEYWORD_5,
KEYWORD_6,
KEYWORD_7,
KEYWORD_8
]
},
{
NOT: [
KEYWORD_COMPOSITE_3,
KEYWORD_4,
KEYWORD_9
]
}
}

我正在尝试使用一个或多个正则表达式在 JavaScript 中执行此操作。

有什么想法吗?有什么帮助吗?谢谢

最佳答案

仅使用正则表达式无法做到这一点,仍然需要一些编程:

function parse(input) {
var keywords = ['AND', 'OR', 'NOT'];
var result = {}, kw = 'AND';
input.replace(/"(.+?)"|(\w+)/g, function($0, $1, $2) {
if(keywords.indexOf($2) >= 0) {
kw = $2;
} else {
if(!(kw in result))
result[kw] = [];
result[kw].push($1 || $2);
}
});
return result;
}

关于javascript - 正则表达式使用javascript获取多个模式之间的匹配文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17724506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com