Ansible剧本中的Python正则表达式问题
我在Zabbix代理配置中有一个字符串,如Ansible剧本中的Python正则表达式问题,python,regex,ansible,Python,Regex,Ansible,我在Zabbix代理配置中有一个字符串,如 HostMetadata=Linux 我想用变量“nginx”将其更改为: 这种变化必须是幂等的。但当我两次使用代码时,行变为 HostMetadata=Linux nginx nginx 我的代码: -名称:regexp 线条填充: 路径:/etc/zabbix/zabbix_agentd.conf regexp:“^(HostMetadata=Linux.*)$” 行:'\1 nginx' 背景参考:是的 标签:regexp 我尝试了“^Ho
HostMetadata=Linux
我想用变量“nginx”将其更改为:
这种变化必须是幂等的。但当我两次使用代码时,行变为
HostMetadata=Linux nginx nginx
我的代码:
-名称:regexp
线条填充:
路径:/etc/zabbix/zabbix_agentd.conf
regexp:“^(HostMetadata=Linux.*)$”
行:'\1 nginx'
背景参考:是的
标签:regexp
我尝试了“^HostMetadata=((?!nginx)。)*$”,但它中断了下一步,结果将是“x nginx”
我想创建可重用代码并添加新参数。例如:
VAR=nginx
"HostMetadata=Linux" -> "HostMetadata=Linux nginx"
VAR=apache
"HostMetadata=Linux nginx" -> "HostMetadata=Linux nginx apache"
VAR=nginx
"HostMetadata=Linux nginx apache" -> "HostMetadata=Linux nginx apache" (nothing changed)
您应该只捕获需要保留的部分,其余部分应该匹配 你可以用
regexp: '^(HostMetadata=Linux).*'
看
详细信息
-字符串的开头^
-捕获组#1(用替换字符串中的(HostMetadata=Linux)
引用):文本字符串\1
-字符串末尾的剩余部分,尽可能多的0个或更多字符(换行字符除外)*
^(HostMetadata=Linux(?。*nginx)。*)
@AlxiRus这样更好吗?非常感谢!正是我想要的!
regexp: '^(HostMetadata=Linux).*'