You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改正则表达式以仅匹配C#合法类定义行(排除注释与字符串)

修正C#类定义匹配正则,避免误匹配注释和字符串

要解决原正则误匹配注释、字符串的问题,核心是先排除这些非代码区域,再精准匹配合法的类定义。直接调整正则表达式即可实现需求:

最终正则表达式

(?<!//.*)(?<!/\*.*)(?<!".*)\b(public|protected|internal|private|static|abstract)\b\s+(class)\b(?!.*")(?!.*\*/)

关键修正细节

  • 用(?<!//.*)做负向预查,确保当前位置不在单行注释(//开头的内容)范围内
  • 用(?<!/\*.*)排除多行注释的起始区域,避免匹配/* ... public class ... */里的内容
  • 用(?<!".*)和(?!.*")限制匹配范围,跳过双引号包裹的字符串内容
  • 用(?!.*\*/)排除多行注释的结尾区域
  • 把原正则的\W+替换为\s+,因为类修饰符和class之间只能是空白字符(空格、制表符等),\W会匹配符号,容易引入误匹配

额外提示

如果要处理多行类定义、嵌套注释/字符串这类复杂场景,单纯正则会有局限性。这种情况下建议用专门的C#语法分析器(比如Roslyn),比正则更稳定可靠。

内容的提问来源于stack exchange,提问作者Jonas Lindahl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 01:31:05