題 正則表達式匹配XML註釋


我正在尋找一個正則表達式來匹配XML文檔中的註釋:

<root>
<!-- 
    match this 
-->
<but>not this</but>
<!--
     and also this
-->
</root>

我試過了 <!--[^(-->)]*-->,只匹配單行註釋,和 <!--[\s\S\n]*--> 它也匹配非註釋節點。


4
2017-12-05 18:54


起源




答案:


你正在尋找的正則表達式是:

^<!--[\s\S\n]*?-->$

說明:

^                   Start of match
 <!--               All comments must begin with this
     [\s\S\n]       Any character (. doesn't allow newlines)
             *      0 or more of the previous thing ([\S\s])
              ?     As few of the previous thing as possible while still matching
               -->  All comments must end with this
                  $ End of match

如果您在評論中有評論,則會出現問題:

<!-- Documentation
This program documents itself using comments of the type <!-- -->
-->

以粗體突出顯示匹配


4
2017-12-05 19:13



這個確切的表達對我來說不起作用,但這樣做:<! - [\ s \ S \ n] *? - >。給你綠色複選框指出“?”雖然,還有徹底的解釋。 - Dan Solovay
@DanSolovay我將對其進行編輯,以包含您對Visual Studio怪癖的發現。 - timotree