REGEX-在html注释模式之间插入内容

REGEX - Inserting things between html comment pattern

本文关键字:插入 之间 模式 html 注释 REGEX-      更新时间:2023-09-26

我正在尝试创建一些js来延迟加载html文件。因此,我必须在html注释中创建模式,然后为js文件注入脚本标记。有点像大口注射,但我自己的方式。

以下是html注释示例:

<!--inject:module:js-->
<!--endinject-->

我想确定注释模式,然后在里面注入脚本标记,它应该做一些类似的事情:

<!--inject:module:js-->
<script src="app/start.module.js"></script>
<script src="app/some.module.js"></script>
<script src="app/content.module.js"></script>
<!--endinject-->

以下是我迄今为止在RegEx:上所做的尝试

/(<!--(inject:?(['w]*?)?:?(['w]*?)?)-->)(<!--endinject-->)*?/gm

它将只选择第一个"注入"注释。

<!--inject:module:js-->

PS.:我还是RegEx的新手。

谢谢!

应用于时

<!--inject:module:js-->
<script src="app/start.module.js"></script>
<script src="app/some.module.js"></script>
<script src="app/content.module.js"></script>
<!--endinject-->

这个

(<!--inject:('w+):('w+)-->(?:(?!<!--endinject-->)['s'S])*)(?=<!--endinject-->)

匹配:

第1组:

<!--inject:module:js-->
<script src="app/start.module.js"></script>
<script src="app/some.module.js"></script>
<script src="app/content.module.js"></script>

组2和组3分别包含modulejs

您可以继续使用$1'n<script src="another/script.js"></script>'n替换任何匹配项。

这将保留注释结构,因此可以在同一输入上连续使用多次。

经过一些尝试(感谢@Tomalak),我找到了解决方案。

给定当前带有脚本标记的html注释:

<!--inject:module:js-->
<script src="app/start.module.js"></script>
<script src="app/some.module.js"></script>
<script src="app/content.module.js"></script>
<!--endinject-->

我这样做是为了匹配3组:

/(<!--(inject:?('w*?):?('w*?)?)-->)(['s'S]*?)(<!--endinject-->)/g

其中第1组为:

<!--inject:module:js-->

第2组为:

<script src="app/start.module.js"></script>
<script src="app/some.module.js"></script>
<script src="app/content.module.js"></script>

第3组是:

<!--endinject-->

通过这3个匹配,我可以检测注释模式,并在组2中附加其他脚本标记。这就是我想要的。

以下是测试链接:http://regexr.com/3cibb

谢谢大家的帮助!