RegExp - 替换两个子串之间的所有匹配

时间:2016-05-09 15:25:12

标签: regex

是否可以替换一个正则表达式中两个子字符串之间的所有匹配项?

我的理由是我想在 li 标记之后注入HTML,但只在myList中注入。

在:

<ul class="myList">
    <li>List item</li>
    <li>List item</li>
</ul>

之后(...将是注入的标记):

<ul class="myList">
    <li>...List item</li>
    <li>...List item</li>
</ul>

任何帮助都会很棒,谢谢。

1 个答案:

答案 0 :(得分:1)

  

我的情况是我想在li标签之后注入HTML,但只在myList中注入。

除了可以轻松编写“快速,hacky”脚本以完成工作的琐碎案例之外,you should never use regular expressions to parse HTML.

在这种情况下,“快速,黑客”的脚本可以是例如搜索:

<ul class="myList">.*<li>([^<]*)</li>(?=.*</ul>)

(注意:这可能需要是多行搜索;如果没有此选项,请将.*替换为[\s\S]*。)

...然后替换第一个匹配组的值(可能由$1\1表示,具体取决于您的操作方式。)

但是,根据我上面的链接,我想强调这不是一个完美的答案。用正则表达式完全解析HTML几乎是不可能的。

要“正确”执行此操作,您必须使用XML解析器。