【问题标题】:Regex to identify all Comment blocks in a Code正则表达式识别代码中的所有注释块
【发布时间】:2025-11-25 07:50:07
【问题描述】:

正在努力在 Salesforce APEX 中编写代码以识别代码中的所有评论块。

在更大的前景中,我想检查代码行以检查是否存在任何最佳实践错误。

为此,我需要正确的行计算,因此希望将注释块合并为单行。

但是,我尝试过的所有模式都进入了无限循环。

我正在寻找正则表达式模式,它将为以下类型的代码返回 3 个匹配项:-

/* hey

*ru

*there

*/

Some COde

/* hey

*ru

*there

*/

Some Code
/* hey

*ru

*there

*/

Some Code

我已经尝试过的选项如下:-

\\*([^*]|[\r\n]|(\\*+([^*/]|[\r\n])))*\\*+
(/\\*([^*]|[\r\n]|(\\*+([^*/]|[\r\n])))*\\*+/) 
/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/

但这些都不起作用。

有人可以帮我更好的字符串吗?

【问题讨论】:

  • 试试/\\*[^*]*\\*+([^/*][^*]*\\*+)*/。我不确定您是否可以使用非捕获组,如果可以,/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/ 也应该可以工作。
  • 你用的代码是什么?

标签: regex salesforce apex


【解决方案1】:

如果您只想计算注释块,您可以在完整代码上使用以下正则表达式(而不是按行):

/(/\*.*?\*/)/sg

您必须使用单行和全局修饰符才能返回所有 cmets。

【讨论】:

    【解决方案2】:

    查看 Apex 文档,您似乎正在寻找与 Java 兼容的正则表达式。

    你可以依赖

    "/\\*[^*]*\\*+([^/*][^*]*\\*+)*/"
    

    regex demo

    详情

    • /\* - 文字 /* susbstring
    • [^*]*\*+ - 匹配除 * 之外的 0+ 个字符,然后匹配一个或多个字面星号
    • (?:[^/*][^*]*\*+)* - 零个或多个序列:
      • [^/*][^*]*\*+ - 除/* 之外的任何字符(参见[^/*])后跟零个或多个除星号以外的字符([^*]*)后跟一个或多个星号(\*+
    • / - 关闭 / 符号。

    【讨论】:

      最近更新 更多