Regex 用于查找C样式块注释的正则表达式

Regex 用于查找C样式块注释的正则表达式,regex,Regex,如何使用正则表达式查找此模式 C样式块注释 /*xxxxxxxxxxx*/尝试使用 \/\*(\*(?!\/)|[^*])*\*\/ 捕获单行和多行块注释。它搜索/*,后跟任意数量的: 后面不跟/的* 除* 然后再次关闭*/。如果/*在同一行上并且在/之后,这意味着它不会开始注释呢?不,我不需要处理这种情况。除了使用正则表达式之外,如果你想全力以赴,你可以使用带有C(或其他)语言语法的语言解析器。例如yacc、javacc和antlr。请看关于识别C注释的问题,了解“正确”处理C注释的复杂

如何使用正则表达式查找此模式

C样式块注释

/*xxxxxxxxxxx*/

尝试使用

\/\*(\*(?!\/)|[^*])*\*\/
捕获单行和多行块注释。它搜索
/*
,后跟任意数量的:

  • 后面不跟
    /
    *
  • *

然后再次关闭
*/

如果
/*
在同一行上并且在
/
之后,这意味着它不会开始注释呢?不,我不需要处理这种情况。除了使用正则表达式之外,如果你想全力以赴,你可以使用带有C(或其他)语言语法的语言解析器。例如yacc、javacc和antlr。请看关于识别C注释的问题,了解“正确”处理C注释的复杂性(意思是“C编译器必须处理C注释的方式”)。这不是直截了当的。您可能只处理简单的注释,但请为编译器编写者考虑一下。我怀疑还有其他相关的问题和答案。(不;这个问题不是引用的问题的重复。)我尝试使用java作为“\\/\*(\*(?!\\/)\[^*])*\*\\\”来编写,但是使用String类的match函数,它抛出了java.util.regex.PatternSyntaxException异常:索引23附近的意外内部错误。有人知道为什么吗?您不需要在单独的分支中匹配空白字符<代码>[^*/]已经涵盖了它们。
|\s
所做的一切就是向您敞开心扉。另外,您需要将斜杠去掉,否则您的正则表达式将无法将注释与其中的斜杠进行匹配。更改为您的建议(尽管OP说,带有斜杠的注释似乎不是问题)使用
/\*.*?\*/
。我喜欢添加原始字符串
r/[*]([^*]|([*][^/])*[*]/”
因为它在python中工作@shuva,我很喜欢你的正则表达式,但现在它缺少
/***/[*][^/]
,但这也会吃掉最后一颗星。作为一个快速修复方法,我使用了
r/[*]([^*]|([*][^/])*[*]+/“
(请注意末尾的额外加号,允许附加的尾星。)