Ansible regex_replace 在正则表达式匹配后插入值
Ansible regex_replace insert value after regex match
我有一个版本变量,我需要拆分并插入一个 .中间
我试过了
ansible localhost -e version=300 -m debug -a "msg={{ version | regex_replace('\d{1,2}', '.\g<0>' ) }}"
但是 o/p 是
TASK [debug] ********************************************************************************************************************************************************************************************************************************
ok: [localhost] =>
msg: .30.0
有一个。首先添加 .30.0 。我可以使用 regex_repace 删除第一个。在那之后。
但是还有其他更好的方法吗?为什么 pattern 将小数点放在首位?
Q: "Why is pattern putting the decimal point in the first place?"
A:正则表达式 \d{1,2}
匹配一个或两个数字。给定字符串 300
,此正则表达式匹配前两位数字 30
。它将被替换为 .\g<0>
从而给出
.30
下一场比赛是 0
,因为只剩下一个数字。替换给出
.0
放在一起结果是
.30.0
Q: "Is there any way I can directly insert "." (dot) after the second place? ie 30.0?"
答:比如剧
- hosts: localhost
vars:
my_string: '300'
tasks:
- debug:
msg: "{{ my_string[0:2] ~ '.' ~ my_string[2:] }}"
- debug:
msg: "{{ my_string[:-1] ~ '.' ~ my_string[-1] }}"
给予
"msg": "30.0"
"msg": "30.0"
我有一个版本变量,我需要拆分并插入一个 .中间
我试过了
ansible localhost -e version=300 -m debug -a "msg={{ version | regex_replace('\d{1,2}', '.\g<0>' ) }}"
但是 o/p 是
TASK [debug] ********************************************************************************************************************************************************************************************************************************
ok: [localhost] =>
msg: .30.0
有一个。首先添加 .30.0 。我可以使用 regex_repace 删除第一个。在那之后。 但是还有其他更好的方法吗?为什么 pattern 将小数点放在首位?
Q: "Why is pattern putting the decimal point in the first place?"
A:正则表达式 \d{1,2}
匹配一个或两个数字。给定字符串 300
,此正则表达式匹配前两位数字 30
。它将被替换为 .\g<0>
从而给出
.30
下一场比赛是 0
,因为只剩下一个数字。替换给出
.0
放在一起结果是
.30.0
Q: "Is there any way I can directly insert "." (dot) after the second place? ie 30.0?"
答:比如剧
- hosts: localhost
vars:
my_string: '300'
tasks:
- debug:
msg: "{{ my_string[0:2] ~ '.' ~ my_string[2:] }}"
- debug:
msg: "{{ my_string[:-1] ~ '.' ~ my_string[-1] }}"
给予
"msg": "30.0"
"msg": "30.0"