如何在ansible中的两个点之间获取字符串

时间:2018-05-21 01:09:43

标签: regex ansible

这是我的ansible主机文件的一部分:

[Arista]
Ars-898z.cnd0 arista_host=Ars-898z.cnd0.example.com
Ars-898y.mex0 arista_host=Ars-898y.mex0.exmaple.com

我想以某种方式使用过滤或正则表达式来提取我的ansible playbook中的cnd或mex(第一个和第二个点之间的字符串)并保存一个变量,例如" dcname"并使用它创建一个文件夹。

请让我知道如何做到这一点。我已经搜索了stackoverflow但是没有得到任何类似的问题的ansible

1 个答案:

答案 0 :(得分:4)

这个怎么样?

(?<=\.)[^.]+(?=\.[^.]*\.[^.]*$)

Regex101 demo

这是一个更灵活的解决方案:

(?<=\.)[^.]+(?=(?:\.[^.]*){3}$)

3可以调整。它是匹配的子字符串后面的点'.'的数量。如果您输入2,则会获得"cnd0",如果您输入3,则会获得"cnd0 arista_host=Ars-898z"

另一个demo