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

如何编写正则表达式匹配无前置注释的class声明?

匹配无前置注释的类声明正则方案

多数编程语言中,注释分为单行注释(//)和多行注释(/* */)两类,且要求注释需紧邻类声明之前、无额外空行。目前需要编写正则表达式,专门匹配没有前置注释的类声明,而现有正则是用来匹配带前置注释的类,需要调整逻辑。

现有正则(匹配带前置注释的类)

(\/\/[^\n]*|\/\*([^\*]|\*[^\/])*\*\/)\n((.*)?(class))

匹配目标

应被匹配的类声明

public class A {}

private final class B {}

private class C {}

public final class D {}

不应被匹配的类声明

// Single line comment
private final class B {}

/* Multiline comment */
public class B {}

解决方案正则

要实现只匹配无前置注释的类,核心是用反向否定预查,排除掉前面紧跟注释的类声明。推荐正则如下:

(?:^|\n)(?!(\/\/[^\n]*|\/\*([^*]|\*[^\/])*\*\/)\n)\s*(public|private|protected|final|static)?\s*\bclass\b

正则逻辑解释

  • (?:^|\n):匹配文本开头或换行,定位到类声明行的起始位置
  • (?!(\/\/[^\n]*|\/\*([^*]|\*[^\/])*\*\/)\n):反向否定预查,确保当前位置的前一行不是单行/多行注释(排除带前置注释的情况)
  • \s*:匹配类声明前可能存在的缩进或空白字符
  • (public|private|protected|final|static)?:匹配类的可选修饰符(覆盖常见的类修饰场景)
  • \s*\bclass\b:精准匹配完整的class关键字,避免误匹配包含class的字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:23:09