有一组名为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}$'
请注意,v
与x0B
符号匹配。
基本上,请注意您转义的内容,转义时的一些文字字符会形成正则表达式转义序列,并停止从字面上匹配这些字符。请参阅 Pythonre
文档:
Python 字符串文字支持的大多数标准转义也被正则表达式解析器接受:
a b f n
r t u U
v x \