Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible剧本中的Python正则表达式问题_Python_Regex_Ansible - Fatal编程技术网

Ansible剧本中的Python正则表达式问题

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

我在Zabbix代理配置中有一个字符串,如

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).*'

详细信息

  • ^
    -字符串的开头
  • (HostMetadata=Linux)
    -捕获组#1(用替换字符串中的
    \1
    引用):文本字符串
  • *
    -字符串末尾的剩余部分,尽可能多的0个或更多字符(换行字符除外)

谢谢您的回答。抱歉,这是我的第一次静默=)我为问题添加了更多的描述。@AlxiRus所以,试试
^(HostMetadata=Linux(?。*nginx)。*)
@AlxiRus这样更好吗?非常感谢!正是我想要的!
regexp: '^(HostMetadata=Linux).*'