回答
\_.
代替.
可以匹配所有的字符,包括换行符。但仅此一点就会导致正则表达式引擎出现问题,因为默认情况下正则表达式是贪婪的。使用\{-}
代替*
进行非贪婪匹配。
由于g/ /d
命令仅删除一行(即使是多行匹配),因此最好切换到s///g
(全局替代)。
:%s/<!--\_.\{-}-->//g
您应该使用XSLT将文件转换为新文件。您使用附加规则的身份转换不复制评论。
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="comment()"/>
你可以在包的libxslt使用“xsltproc的”在Linux上做到这一点作为一个脚本,我想你可以从VIM执行。
我认为这应该工作:
:g/<!--.*?-->/d
问号使得星号“懒”,而不是“贪婪”,这意味着它将尽可能少的匹配,以满足表达。这防止了从表达除去本实施例的中间部分:
We want to keep this<!-- This is a comment -->We also want to keep this<!-- Another comment -->
编辑:看起来正则表达式的VIM味道不支持*?
懒惰匹配。我的错。
怎么样多行? – ghostdog74 2009-11-12 14:42:28
如果它没有太多的麻烦,你有你的系统gawk。你可以试试这个
$ more file
<!--
asdlfj
sdjf
;jsgsdgjasl -->
text i want
i want
....
<!-- junk junk -->
i want text
anthor text
end
$ gawk -vRS='-->' '{ gsub(/<!--.*/,"")}1' file
text i want
i want
....
i want text
anthor text
end
你能解释一下gsub()调用结束时的“1”吗? – 2009-11-12 14:50:00
你可以写另一种方式:gawk -vRS =' - >''{gsub(/
da>确实有效。你能告诉如何通过文件重复这一点吗? – 2009-11-12 15:07:34
@Vijay,对不起,伙计我不知道。您可能必须使用建议的原始正则表达式。 – 2009-11-12 17:33:52
- 1. 如何删除XML注释
- 2. 如何删除XML注释没有XSLT
- 3. 处理XML文件会删除注释
- 4. 在XML中删除注释android
- 5. 删除注释iTextSharp
- 6. 删除SQL注释
- 7. vim删除xml标签
- 8. Vim:双输入后删除注释字符
- 9. Vim自动删除Python注释中的缩进
- 10. 更改mkmapview(删除注释)
- 11. Groovy删除多行注释
- 12. 删除Intellij中的注释
- 13. Scichart不能删除注释
- 14. Unix/Linux,删除行注释
- 15. SecondarySort -OverrideError(删除注释)
- 16. 从mapView中删除注释
- 17. 向mkmap添加注释,但要删除部分注释但不会删除
- 18. 删除行尾注释除非报价
- 19. 如何从大型XML文件中删除所有注释?
- 20. 使用libxml解析XML文件时删除注释
- 21. C#如何用正则表达式删除XML/HTML注释
- 22. 如何自动删除XML文档注释?
- 23. 用双破折号从XML文件中删除注释 -
- 24. 是否有VS2010宏删除XML文件中的所有注释
- 25. Java:编组对象 - 在xml中删除多余的ns2注释
- 26. 使用正则表达式在bash中删除XML注释
- 27. 如何使用Twig模块从XML中删除注释
- 28. 注释掉XML
- 29. Java:删除字符串中的注释
- 30. 我必须删除@Override注释吗?
这很好用!谢谢! – 2009-11-12 14:50:31