如何在Ansible的lineinfile模块中的正则表达式中转义1个或多个空格?

mig*_*vid 4 regex yaml ansible

我正在使用Ansible使用该lineinfile模块在文件上设置一些变量。我遇到的问题是如何拥有一个足够灵活的正则表达式,以便在字符串中间保留一些空格。请看下面:

- name: Set DB IP in db conn file
  lineinfile: 
    dest=/path/to/db_conn
    regexp="{{ item.regexp }}"
    line="{{ item.line }}"
  with_items:
    - { regexp: "^.?dbschema_audit=",
        line: "$dbschema_audit=\'{{ db_schema_audit }}\';" }
    - { regexp: "^.?dbschema_audit_trail\s\*=",
        line: "$dbschema_audit_trail=\'{{ db_schema_audit_trail }}\';" }
Run Code Online (Sandbox Code Playgroud)

我要更改的文件具有以下行:

$dbschema_audit='a';
$dbschema_audit_trail ='a';
Run Code Online (Sandbox Code Playgroud)

我曾尝试不同的变化\s*{'并且\和似乎没有任何工作。我可以从那里获得一些智慧吗?

Chi*_*ang 7

Ansible剧本采用YAML格式。在双引号标量中,以字符开头的\字符序列是转义序列,但是YAML规范\s这不是有效的转义序列。

用双引号标量,您必须编写

"\\s"
Run Code Online (Sandbox Code Playgroud)

另外,在单引号中,该\字符没有特殊含义,因此您可以编写

'\s'
Run Code Online (Sandbox Code Playgroud)