我不擅长构建正则表达式,我需要这方面的帮助:
我想在我的字符串上做一些正则表达式:
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")
演示