栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

正则表达式从C#中删除行注释

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

正则表达式从C#中删除行注释

您的两个正则表达式(用于块和行注释)均存在错误。如果您愿意,我可以描述一下这些bug,但是我觉得如果编写新的bug可能会更有效率,尤其是因为我打算编写一个同时匹配两者的bug。

问题是,每次你有时间

";var lineComments = @"//(.*?)r?n";var strings = @"""((\[^n]|[^""n])*)""";var verbatimStrings = @"@(""[^""]*"")+";

要回答标题中的问题(带状注释),我们需要:

  • 用任何内容替换块注释
  • 用换行符替换行注释(因为正则表达式会吃掉换行符)
  • 将原义字符串保留在原处。

Regex.Replace
可以使用Matchevaluator函数轻松做到这一点:

string noComments = Regex.Replace(input,    blockComments + "|" + lineComments + "|" + strings + "|" + verbatimStrings,    me => {        if (me.Value.StartsWith("/*") || me.Value.StartsWith("//")) return me.Value.StartsWith("//") ? Environment.newline : "";        // Keep the literal strings        return me.Value;    },    RegexOptions.Singleline);

我在Holystream提供的所有示例以及我能想到的其他各种情况下运行了这段代码,它的工作原理很吸引人。如果您可以提供一个失败的示例,我们很乐意为您调整代码。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433074.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号