回答
\_.
代替.
可以匹配所有的字符,包括换行符。但仅此一点就会导致正则表达式引擎出现问题,因为默认情况下正则表达式是贪婪的。使用\{-}
代替*
进行非贪婪匹配。
由于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文件会删除注释
- 3. 在XML中删除注释android
- 4. 删除SQL注释
- 5. vim删除xml标签
- 6. Vim自动删除Python注释中的缩进
- 7. Vim:双输入后删除注释字符
- 8. SecondarySort -OverrideError(删除注释)
- 9. 从mapView中删除注释
- 10. Scichart不能删除注释
- 11. C#如何用正则表达式删除XML/HTML注释
- 12. 注释掉XML
- 13. 我必须删除@Override注释吗?
- 14. 删除C样式多行注释
- 15. SED删除C程序注释
- 16. 删除文本框但保留注释
- 17. 从firebase删除注释数据
- 18. 删除注释时的问题
- 19. 从注释中删除页面引用
- 20. MKMapView没有正确删除注释?
- 21. 删除文本文件中的注释
- 22. 从MapView删除多个注释
- 23. 删除MKMapView注释导致泄漏
- 24. 如何动画刚删除的注释?
- 25. FBAnnotationClustering在swift中删除注释
- 26. 似乎无法删除任何注释
- 27. 删除JavaScript中替换的注释
- 28. xsl删除所有节点的注释
- 29. 使用IntelliJ删除源文件注释?
- 30. 从PDF中删除空注释
这很好用!谢谢! – 2009-11-12 14:50:31