Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.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
Python 使用ansible从字符串中提取数字_Python_Regex_Ansible - Fatal编程技术网

Python 使用ansible从字符串中提取数字

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

我正试图从字符串中提取数字

例如,如果我有字符串“host2”,我只希望返回“2”。如果字符串中没有数字,我希望返回“1”

一些示例:

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]','')}