我有一个带有IP地址的字符串:192.168.10.2
我想在Ansible中提取IP的前三个八位字节,我试图使用这个正则表达式。
{{comp_ip | regex_replace("^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}"), "//1"}}
这不会产生任何结果。有人能纠正我哪里出错了吗?
答案 0 :(得分:7)
如果已经有点分隔的IP地址,有一种简单的方法:
{{ comp_ip.split('.')[0:3] | join('.') }}
答案 1 :(得分:2)
你做得对,你只需要在Regex中使用括号来组成一个组。最好匹配整个ip
并使用$
结束正则表达式,并在代码中将//1
更改为\\1
。
从以下地址更改正则表达式:
^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}
到这个正则表达式:
^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\.[0-9]{1,3}$
这是完整的代码:
{{comp_ip | regex_replace('^([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})\.[0-9]{1,3}$', '\\1')}}
答案 2 :(得分:1)
如果您想要计算网络地址,可以使用Ansible ipaddr过滤器,它提供了以下功能: http://docs.ansible.com/ansible/latest/playbooks_filters_ipaddr.html
links