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

标签 c# regex

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

例如,我试图从我的 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/

相关文章:

c# - 使用 itextsharp 在现有表格/图像上写入文本

C# 关闭窗体的好方法

Java : Pattern How to match any character or symbol in any order between the two braces

ruby - 如何评估孤立的正则表达式

php - 谁能破解这个推特正则表达式?

Javascript -- 正则表达式 -- 以部分匹配结束的多个单词的黑名单

c# - 格式化字符串但省略参数(如果它为空)

c# - 回发后如何将数据保留在通用列表中

c# - CScript 在 c# 中作为进程调用时仅打开 32 位版本

python正则表达式获取除小数之外的数字