我正在尝试创建一个匹配URL中任何特殊字符的正则表达式,然后在它前面添加转义字符\。我创建了以下正则表达式,它正确地从字符串中捕获正确的字符,但它不会在特殊字符前面添加\。
For example - test-google.com would look like test\-google\.com
- hosts: localhost
vars:
site: "test-google.com"
site2: "test.mywebsite.com"
tasks:
- name: Bad at regex
debug:
msg: "{{ site | regex_replace('[^\\w]', '[^\\\w]') }}"
register: regex
- debug:
msg: "{{ regex }}"
我尝试了'[^\\'\'w]'
以及'\w'
我怎么能做到这一点?
感谢。
答案 0 :(得分:2)
您可以使用
msg: "{{ site | regex_replace(r'\W', r'\\\g<0>') }}"
或
msg: "{{ site | regex_replace('\\W', '\\\\\\g<0>') }}"
这里,\W
匹配任何非单词char,替换字符串包含\
(在常规非原始字符串文字中用4个反斜杠表示,并且
原始字符串文字中的2个反斜杠),然后用替换后引用\g<0>
表示整个匹配值。