正则表达式匹配所有评论//,/ * * /

时间:2017-01-07 07:46:58

标签: python regex

我试图编写正则表达式来查找给定文件中的所有注释。我应该处理的评论是multyline commnes,例如

/* comments.
is multiline comment*/

// one liner comment.
我在几个地方搜索过,找到了一些答案。 (one answer)我设法写出了满足我大部分需求的东西:

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

我的代码唯一错误就是它捕获了字符串中的注释。例如

String str = " hey, // I'm not a comment "

我的代码得到了"我不是评论" 但不应该 我尝试了几件事,比如负面观察和后视,但似乎没什么用。

有没有办法做我想做的事?/ 感谢。

修改 我使用的语言是python

1 个答案:

答案 0 :(得分:1)

通常,请考虑使用解析器(考虑嵌套注释等)。话虽这么说,你可以使用(*SKIP)(*FAIL)构造,如果它支持(你没有指定你的编程语言):

"[^"]+"(*SKIP)(*FAIL)
|
'[^']+'(*SKIP)(*FAIL)
|
(?|
    //(?P<comment>.+)
|
    /\*(?P<comment>[\s\S]+?)\*/
)

请参阅a demo on regex101.com