我必须创建一个正则表达式,它将匹配2个html特定注释标记之间的任何内容(包括换行符)。以下是一些html的示例:
<!-- build-remove-start -->
<!-- bower:js -->
<script src="../bower_components/jquery/dist/jquery.js"></script>
<!-- endbower -->
<!-- build-remove-end -->
<!-- inject:vendor:js -->
<!-- endinject -->
我想匹配<!-- build-remove-start -->
和<!-- build-remove-end -->
之间的所有内容,不包括评论标记(我的意思是不删除评论标记,只删除内部的内容)。
我试过了:
<!-- build-remove-start -->[\s\S]<!-- build-remove-end -->
但它不起作用。
这是测试正则表达式的链接:
https://regex101.com/r/rV0qG2/2
答案 0 :(得分:3)
您需要在*
之后添加[\s\S]
。
/<!-- build-remove-start -->([\s\S]*?)<!-- build-remove-end -->/gmi
另外,我建议在?
之后添加*
,这样会使其变得懒惰。通过这种方式,您可以使用下面的示例,而this won't be removed
行将匹配。
<!-- build-remove-start -->
//remove this
<!-- build-remove-end -->
This won't be removed
<!-- build-remove-start -->
//Remove this
<!-- build-remove-end -->