正则表达式识别代码中的所有注释块

时间:2017-02-08 08:56:28

标签: regex salesforce apex

正在努力使用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])))*\*+/

但这一切都无效。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

你可以依靠

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

请参阅regex demo

<强>详情:

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