regex,用javascript获取多个模式之间的匹配文本
regex to get matching text between multiple patterns with javascript
假设我有以下字符串:
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,获取元素的方法是什么,基于打开和关闭标记之间的文本
- 如何使用JavaScript Regex替换字符串中双引号之间的文本
- 使用 JavaScript 中的正则表达式替换大文本中两个字符之间的每个出现的字符串
- j查询在多个文本框之间指定
- 在<选项>标签之间切换时保存输入文本
- 文本未在边框之间居中
- 阅读标签之间的文本
- 在jQuery或JavaScript中获取两个字符串之间的文本
- 循环字符串以查找字符集之间的文本
- 如何使用javascript将文本框中的值限制为1-999之间的值范围
- 使用javascript接受1-999之间的值的文本框
- 在javascript中使用regex只选择标记之间的文本
- 获取javascript中以a到Z之间的特定字符开头的第一个文本的位置
- 需要正则表达式使文本在*bold之间
- 如何获取两个容器之间的文本
- 如何获取javascript中两个文本框之间的天数