Ansible 正则表达式过滤器



有一组名为tags_json的标签

,形式为
[u'03fb9e77138602b41feb8f667f04cc8998a1fd00', u'1575c845a43685b674f54c5cfccd2850c34502ff', u'v0.2.1']

并且只想获得指向版本的版本,即 v0.2.1 .这就是为什么我创建了一个正则表达式并使用regex_search过滤器

- set_fact: 
release_tags: "{{ tags_json | map('regex_search','\b\v(?:[0-9]{1,3}\.){2}[0-9]{1,3}\b') | select('string') | list }}"

但是在列出时,我得到的只是空字符串,没有匹配。假设正则表达式本身很好,但无法获得正确的结果(以"v"和 x.y.z 开头的标签列表(。

您需要在v之前删除任何转义符号

并使用
r'bv(?:[0-9]{1,3}.){2}[0-9]{1,3}b'

或者,为了匹配整个字符串,

r'^v(?:[0-9]{1,3}.){2}[0-9]{1,3}$'

请注意,vx0B符号匹配。

基本上,请注意您转义的内容,转义时的一些文字字符会形成正则表达式转义序列,并停止从字面上匹配这些字符。请参阅 Pythonre文档:

Python 字符串文字支持的大多数标准转义也被正则表达式解析器接受:


a b f n
r t u Uv x \

最新更新