如何使用regexp找到'/ * N * /'

时间:2010-10-14 14:05:14

标签: regex comments

我不想仅针对此特定问题学习正则表达式。 我需要通过C ++文件找到一些'/ * N * /'注释。 有人可以写一个找到这样评论的正则表达式吗?

4 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

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

这是它的工作原理:

\/    <- The / character (escaped because I used / as a delimiter)
\*    <- The * character (escaped because it's a special character)
(     <- Start of a group
  .     <- Any character
  *     <- Repeated but not mandatory
  ?     <- Lazy matching
)     <- End of the group
\*    <- The * character
\/    <- The / character

修改:它不处理\n也不处理\r\n,如果您希望它使用m标记考虑@Alex answer

答案 1 :(得分:2)

怎么样?
/\/\*(.+?)\*\//m

$1将是您的意见。

希望m模式修饰符也会使句点(全部匹配)与新行(\n)匹配。

注意+表示它只会匹配至少一个字符的评论 - 因为看起来你想知道评论本身,这没关系(0长度评论的用途是什么)?

但是,如果您想知道总评论数据块,请将+(1或更多)更改为*(0或更多)。

另外,为什么不试试正则表达式呢?它起初很棘手,因为语法看起来很有趣,但它们非常强大。

答案 2 :(得分:0)

怎么样:(?&lt; = \ / *)(。*?)(?= * \ /)

使用lookbehinds和lookaheads并捕获注释文本(否则删除。*周围的parens,而不是捕获)。确保使用多行搜索,因为这些是多行注释

答案 3 :(得分:0)