Regex para corresponder aos comentários XML

4

Estou procurando um Regex para corresponder comentários em documentos XML:

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

Já experimentei <!--[^(-->)]*--> , que corresponde apenas a comentários de linha única, e <!--[\s\S\n]*--> que também corresponde a nós não comentados.

    
por Dan Solovay 05.12.2016 / 19:54

1 resposta

4

O regex que você está procurando seria:

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

Explicação:

^                   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

Se você tiver um comentário dentro de um comentário, isso terá problemas:

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

Realçado em negrito significa uma correspondência

    
por 05.12.2016 / 20:13

Tags