我正在编写一个小的bash脚本来编辑我的mkdocs配置文件,并根据另一个目录的内容更新它的一部分。
我正在尝试替换配置文件中的内容,但是我在匹配需要用正则表达式模式替换的部分时遇到了一些问题。
以下是我尝试更新的部分:
# Pages
pages:
- Home: index.md
- Getting Started:
- Installation: getting-started/installation.md
- Methods:
- config: methods/config.md
- add_header: methods/add_header.md
- add_tabs: methods/add_tabs.md
- add_fields: methods/add_fields.md
- footer: methods/footer.md
- Settings Fields:
- Text: fields/text.md
- Checkbox: fields/checkbox.md
- Radio: fields/radio.md
- Select: fields/select.md
- Image: fields/image.md
- Multicheck: fields/multicheck.md
- Hooks & Filters:
- Overview: actions/overview.md
- Examples:
- Basic Plugin: examples/basic-plugin.md
- Plugin Add-On: examples/plugin-addon.md
我要更新的部分是'设置字段'部分。
目前我有:
/ {2}- Settings Fields:([^#]+) {2}-/g
这似乎符合我的需要,然后是一些。
例如:
- Text: fields/text.md
- Checkbox: fields/checkbox.md
- Radio: fields/radio.md
- Select: fields/select.md
- Image: fields/image.md
- Multicheck: fields/multicheck.md
- Hooks & Filters:
- Overview: actions/overview.md
- Examples:
- Basic Plugin: examples/basic-plugin.md
-
理想情况下,我只想返回以下内容,因此我可以删除它并将其替换为新内容:
- Text: fields/text.md
- Checkbox: fields/checkbox.md
- Radio: fields/radio.md
- Select: fields/select.md
- Image: fields/image.md
- Multicheck: fields/multicheck.md
我已经设置了regex101测试,我在摆弄东西,但我没有正则表达式向导。任何指针都会受到赞赏。
Regex101:https://regex101.com/r/DViAoA/1
答案 0 :(得分:0)
您可以修改正则表达式以使用ungreedy运算符并添加{2}
模式的行首,如下所示:
{2}- Settings Fields:([^#]+?)^ {2}-
ungreedy ---^ ^--- start of line
<强> Working demo 强>
答案 1 :(得分:0)
你不需要复杂的正则表达式。
您只需要Settings
和Hooks
之间的内容
编辑使其更灵活的模式。它现在将匹配2个空格和 - 或字符串结尾。
$re ='/\s{2}-\sHooks & Filters:(.*?)^\s{2}-|\z/ms';
$str = '# Pages
pages:
- Home: index.md
- Getting Started:
- Installation: getting-started/installation.md
- Methods:
- config: methods/config.md
- add_header: methods/add_header.md
- add_tabs: methods/add_tabs.md
- add_fields: methods/add_fields.md
- footer: methods/footer.md
- Settings Fields:
- Text: fields/text.md
- Checkbox: fields/checkbox.md
- Radio: fields/radio.md
- Select: fields/select.md
- Image: fields/image.md
- Multicheck: fields/multicheck.md
- Hooks & Filters:
- Overview: actions/overview.md
- Examples:
- Basic Plugin: examples/basic-plugin.md
- Plugin Add-On: examples/plugin-addon.md';
preg_match($re, $str, $matches);
Echo rtrim($matches[1]);