regex - 如何替换未知字符串?
问题描述
我正在编写一本剧本,我需要找到一种方法来替换我将在变量中拥有的值的一些特定值(如下例所示)。问题是,每次我运行剧本时,要替换的值都会有所不同。
define( 'DB_NAME', 'somestring' );
define( 'DB_USER', 'somevalue' );
define( 'DB_PASSWORD', 'someothervalue' );
我正在考虑模块ansible.builtin.replace
甚至模块shell
,但我仍然无法找到使其工作的方法。我是 ansible 和 IT 的新手,我还是不明白正则表达式是如何工作的。
我正在尝试这样,但正如你所看到的,我完全不知道我在做什么:
- name: Replace between the expressions (requires Ansible >= 2.4)
ansible.builtin.replace:
path: /home/marcelo/public_html/wp-config.php
after: "define( 'DB_NAME', '"
before: "');"
regexp: "*"
replace: "{{ DBNM }}"
一些我可以用来开始的建议或例子会有很大帮助。
解决方案
使用替换模块是要走的路。您已经以正确的方式思考after
and before
,但那些匹配整行,而不是它的一部分(您可以通过这个指定文件中应该发生替换的部分)。
在您的情况下,您需要将所有逻辑打包到正则表达式中:
- name: Replace between the expressions (requires Ansible >= 2.4)
ansible.builtin.replace:
path: /home/marcelo/public_html/wp-config.php
regexp: "define\\( 'DB_NAME', '.*' \\);"
replace: "define( 'DB_NAME', '{{ DBNM }}' );"
推荐阅读
- algorithm - 基于另一个列表过滤列表的高效方法?
- java - 如何获取 EDT 时区的 GMT 值?
- velocity - 检查速度模板中的变量是数字还是字母
- flutter - 如何在这个 fl-chart 颤动中删除 XY 值
- python - 在 Python 中使用 .csv 列中的列表
- python - 将 pip 升级到 21.1.1 后的软件包安装问题
- git - 您可以将代码从一个分支推送到另一个分支,将不同的下游推送到不同的上游吗
- css - 自定义 CSS Swit React-bootstrap
- google-cloud-platform - 编辑存储桶中对象的权限时收到错误消息
- python - 在 numpy 中对多维数组进行分箱