Ansible,字符串第一个字符的正则表达式。

3

我目前有一个 Ansible 正则表达式似乎无法工作,尽管这里的正则表达式是有效的:https://regex101.com/r/g36zkI/1

问题本质上如下:last_name 可以是双连字符,并且我想提取其中每个单词的第一个字母。正则表达式似乎是最好的方法。只是无法让 Jinja 发挥作用。

以上似乎提取了单词边界中的第一个字符:

Input:
first_name: Pepper
last_name: Von Pig

Jinja:
backup_username: "{{ first_name }}{{ last_name | regex_search('([a-zA-Z]|\d+)') }}"

期望输出:PepperVP

问题 / 演示在这里:

https://jinjafx.io/dt/pvQ7oWx3Q

我错过了什么?

1个回答

2

您可以使用

backup_username: "{{ first_name }}{{ last_name | regex_findall('\\b[A-Z]') | join }}
regex_findall('\\b[A-Z]') 可以替换为 regex_findall('\\b[A-Za-z]') 或者 regex_findall('\\b\\w')(具体根据实际需求而定)。 细节说明
  • regex_findall('\\b[A-Z]') - 提取字符串开头或非单词字符后面的所有大写字母出现次数。
  • join - 用空字符串连接前一步中的项目(即连接这些项目)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接