gpt4 book ai didi

c# - 在 CSS 中查找和删除注释的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 20:26:09 24 4
gpt4 key购买 nike

我正在编写自己的用于练习的缩小工具(正则表达式练习),但在学习了一些教程之后我仍然没有掌握它。

例如,我试图从我的 CSS 文件中查找并删除所有评论,其中包括:

  1. 单行注释

    /** 单行注释****/或

    /****单行注释*/and

  2. 多行注释如

    /****评论开始

    .myCssClass

    {

    font:13pt Arial;

********* 评论结束**/

到目前为止,我使用的表达式只能处理单行注释,如下所示

(\/\*.*\*\/)

但是关于正则表达式,我想了解的是如何让正则表达式引擎也跨行。我试过这个:

(\/\*[.\n]*\*\/)

这根本不起作用。

有人知道我错在哪里吗?

谢谢,雅克

最佳答案

如果您在 C# 中运行匹配,您是否尝试过 RegexOptions?

Match m = Regex.Match(word, pattern, RegexOptions.Multiline);

“多行模式。改变 ^ 和 $ 的含义,使它们分别匹配任何行的开头和结尾,而不仅仅是整个字符串的开头和结尾。”

另见 Strip out C Style Multi-line Comments

编辑:

好的..看起来像是正则表达式的问题。这是一个使用来自 http://ostermiller.org/findcomment.html 的正则表达式模式的工作示例.这个人在推导正则表达式方面做得很好,并展示了各种方法的缺陷和不足。注意:RegexOptions.Multiline/RegexOptions.Singleline 似乎不会影响结果。

string input = @"this is some stuff right here
/* blah blah blah
blah blah blah
blah blah blah */ and this is more stuff /* blah */
right here.";

string pattern = @"(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)";
string output = Regex.Replace(input, pattern, string.Empty, RegexOptions.Singleline);

关于c# - 在 CSS 中查找和删除注释的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10554444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com