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



我不擅长构建正则表达式,我需要这方面的帮助:

我想在我的字符串上做一些正则表达式:

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"))"

使用上述正则表达式?

谢谢!

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

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

演示

最新更新