4

Я ищу Regex для сопоставления комментариев в документах XML:

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

Я пробовал <!--[^(-->)]*--> , который соответствует только однострочным комментариям, и <!--[\s\S\n]*--> который соответствует без комментариев узлы также.

1 ответ1

4

Регулярное выражение, которое вы ищете, будет:

^<!--[\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 <!-- -->
-->

Выделенный жирным шрифтом означает совпадение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .