Python 使用ansible从字符串中提取数字
我正试图从字符串中提取数字 例如,如果我有字符串“host2”,我只希望返回“2”。如果字符串中没有数字,我希望返回“1” 一些示例:Python 使用ansible从字符串中提取数字,python,regex,ansible,Python,Regex,Ansible,我正试图从字符串中提取数字 例如,如果我有字符串“host2”,我只希望返回“2”。如果字符串中没有数字,我希望返回“1” 一些示例: host1 -> 1 ho12st -> 12 host -> 1 host2 -> 2 host2test -> 2 host02 -> 02 host34 -> 34 我不知道我是应该使用一个模块来完成这个任务,还是使用内部工作来设置一个事实。我是个新手 类似于以下内容的内容在python中也可以使用,但不是ans
host1 -> 1
ho12st -> 12
host -> 1
host2 -> 2
host2test -> 2
host02 -> 02
host34 -> 34
我不知道我是应该使用一个模块来完成这个任务,还是使用内部工作来设置一个事实。我是个新手
类似于以下内容的内容在python中也可以使用,但不是ansible
int(''.join(filter(str.isdigit, {{ ansible_hostname }} )))
这将在shell上解释,因此我不能使用{{ansible_hostname}}变量。如果找不到数字,它也不会默认为“1”
****答复****
我最终用这个来得到我想要的结果:
- set_fact:
env_id: '{{ server_name | regex_search(qry) }}'
vars:
qry: '[0-9]'
- set_fact:
env_id: "1"
when: env_id == ""
如果你想用正则表达式来完成这项任务,我想我们只能用一个简单的表达式,比如:
([0-9]+)
然后,您可以简单地添加一个if
,让那些没有数字的人返回1
试验
如果你想用正则表达式来完成这项任务,我想我们只能用一个简单的表达式,比如:
([0-9]+)
然后,您可以简单地添加一个if
,让那些没有数字的人返回1
试验
可能的重复项,然后检查是否存在匹配项并返回1。我没有回答,所以我发表了评论。使用ansible,您可以执行以下操作:“{{server_name | regex_replace('[^0-9]',''}}}”可能是的重复项,然后检查是否存在匹配项并返回1。我没有设法回答,所以我发表了评论。使用ansible,您可以执行以下操作:{{server_name | regex_replace('[^0-9]','')}