我对框架正则表达式不是很擅长,对此我需要帮助:
我想对字符串做一些正则表达式:
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"))"
使用上述正则表达式?
谢谢!