regex,用javascript获取多个模式之间的匹配文本

regex to get matching text between multiple patterns with javascript

本文关键字:之间 文本 模式 javascript 获取 regex      更新时间:2023-09-26

假设我有以下字符串:

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;
}