【发布时间】:2020-10-20 11:50:57
【问题描述】:
我有一个简单的字符串,我喜欢用 XXXX 替换 Container:
<Resource name="jdbc/X1" auth="Container" type="javax.sql.DataSource"
username="yyyy" password="yyyyy"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:yyyyy/yyyyy@yyyy:yyyy/yyyy"
validationQuery="SELECT 1 from dual"/>
这是 ansible-playbook
---
- name: "xml handler"
hosts: localhost
connection: local
tasks:
- name: Test2
debug:
msg: "hey"
- name: Replace between the expressions (requires Ansible >= 2.4)
replace:
path: /home/ec2-user/backip/foo.xml
after: 'Resource name="jdbc\/X1"'
before: '\/>'
regexp: 'auth="(.*?)"'
replace: 'XXXX\1'
- name: Test2
debug:
msg: "bye"
但我得到的只是:
<Resource name="jdbc/X1" XXXX Container type="javax.sql.DataSource"
username="yyyy" password="yyyyy"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:yyyyy/yyyyy@yyyy:yyyy/yyyy"
validationQuery="SELECT 1 from dual"/>
这个简单的正则表达式有什么问题?
预期输出是:
<Resource name="jdbc/X1" auth="XXXX" type="javax.sql.DataSource"
【问题讨论】:
-
预期的输出是什么?从输入和正则表达式来看,您发布的输出正是我期望得到的。
-
不应该是
'XXXX\\1'吗? -
为什么“\\1”在所有示例中都是“\1”
-
@toydarian 我更新问题