我想在一个正则表达式中匹配c样式注释 . 对于前者
int i /* ABC 123 */
int i // ABC 123
我能写的是
(.*?)(?:/\\*|//)\\s*(ABC)\\s*(\\d)+\\s*
这只是匹配
int i /* ABC 123
or
int i // ABC 123
在正则表达式中是否有一种方法我告诉我是否在我的字符串中有/ 然后 /应该在那里,如果它以//开头我不应该匹配* /
如果有可能那么正则表达式是什么 .
/ * /用作C中的多行注释,但在我的情况下,它可能不是多行 . 正如我在示例中给出的那样 - > int i / ABC 123 * /只是一行 .
int i / * ABC 123 * /和int i // ABC 123在C中都是相同的 . 所以我不想写一个正则表达式匹配一个正则表达式中的行,如果我一个接一个地遇到它们 .
2 回答
你的问题有点不清楚,但我会假设:
您正在匹配多行
你逐行匹配
如果没有,那么你可能会修改这个答案 .
我认为最简单的方法是设置一个布尔变量
isInMultiLineComment
. 如果您找到一个没有结束的评论(/*
)(*/
),那么这将是真的,并且应忽略其他类型的评论(//
) .你可以用变量
isInSingleLineComment
做类似的事情 .尝试
Expalantion