如何为给定的字符串编写正则表达式-Regex Javascript

时间:2018-09-25 20:31:23

标签: javascript regex

我对框架正则表达式不是很擅长,对此我需要帮助:

我想对字符串做一些正则表达式:

str= '(OS:"Windows" OR OS:"VMware") AND tags.tag.name:"test" and not asset:(name: "somename" or name="somename3" or name="somename4")';

我们可以在此处忽略键名和键值,而专注于格式。

使用正则表达式,我希望替换str并使新字符串看起来像这样:

newStr= '(OS:"Windows" OR OS:"VMware") AND tags.tag:(name:"test") and not sev.name: "somename"'

因此基本上用正则表达式将tags.tag.name:"test"的这一部分替换为tags.tag:(name:"test")

我尝试过:

test = str.replace(/tags\.tag\.(([^<>=]+?\(.+?\))|.+?){1}($|(\s+?(and|or)\s+?))/ig, function(a, b, match2, match3, op) {
                    return String.format('{0}:({1}){2}', insert, b, op ? op:'');
                });//here insert= '"tags.tag"'

但是o / p给了我

"(OS:"Windows" OR OS:"VMware") AND tags.tag:(name:"test" AND not asset:(name: "somename" or name="somename3" or name="somename4"))"

这对我来说是错误的查询。

如何实现

newStr= '(OS:"Windows" OR OS:"VMware") AND tags.tag:(name:"test") and not sev.name: "somename"'

代替

"(OS:"Windows" OR OS:"VMware") AND tags.tag:(name:"test" AND not asset:(name: "somename" or name="somename3" or name="somename4"))"

使用上述正则表达式?

谢谢!

1 个答案:

答案 0 :(得分:0)

这将起作用:(?<=tags\.tag)\.(\w+):"(\w+)"

:($1:"$2")替换该模式

Demo