尝试使用正则表达式模式从配置文件中提取用户名和密码时出现问题

Problems trying to extract username and password from configuration file using a regular expression pattern

我需要从配置文件中提取用户名和密码。

define( 'DB_USER', 'username' );
define( 'DB_PASSWORD', 'password' );

到目前为止,我使用以下代码设法提取了一个字符串:

- set_fact:
    dbuser: "{{ wpconfig.stdout | regex_search('DB_USER(.+)', '\1') | first }}"

输出

ok: [prod_server] => {
    "dbuser": "', 'username' );"
}

我只需要提取 username 部分并删除所有其他字符。

我试着玩了一下正则表达式,我设法建立了一个显然提取 username 部分的正则表达式,将其放入第 1 组:https://regex101.com/r/OzJR1X/2

如果我尝试将它添加到我的代码中,则会出现错误:

Syntax Error while loading YAML.
  found unknown escape character 's'

创建参数字典。给定行列表,例如

    - set_fact:
        wpconfig_list: "{{ lookup('file', 'wpconfig.conf').splitlines() }}"
  wpconfig_list:
  - define( 'DB_USER', 'username' );
  - define( 'DB_PASSWORD', 'password' );

可能使用 wpconfig.stdout_lines

使代码符合您的需求

任务创建字典

    - set_fact:
        wpconfig_dict: "{{ wpconfig_dict|default({})|
                           combine({_key: _val}) }}"
      loop: "{{ wpconfig_list }}"
      vars:
        _regex1: '^.*\((.*),(.*)\).*$'
        _regex2: "'"
        _key: "{{ item|regex_replace(_regex1, '\1')|trim|
                       regex_replace(_regex2, '') }}" 
        _val: "{{ item|regex_replace(_regex1, '\2')|trim|
                       regex_replace(_regex2, '') }}"
  wpconfig_dict:
    DB_PASSWORD: password
    DB_USER: username

Select 用户,例如

    - set_fact:
        dbuser: "{{ wpconfig_dict.DB_USER }}"

给予

  dbuser: username