代码之家  ›  专栏  ›  技术社区  ›  user283145

如何使用regexp查找“/*N*/”

  •  0
  • user283145  · 技术社区  · 14 年前

    我不想只为这个问题学习regexp。 我需要通过C++文件找到一些'/*n*/'注释。

    4 回复  |  直到 14 年前
        1
  •  2
  •   Community dbr    7 年前

    试试这个正则表达式:

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

    这就是它的工作原理:

    \/    <- 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 ,如果你想那么考虑 @Alex answer m 旗帜。

        2
  •  2
  •   alex    14 年前

    那怎么办

    /\/\*(.+?)\*\//m
    

    $1 将会是你的评论。

    有希望地 m 模式修改器将使句点(全部匹配)匹配新行( \n )还有。

    注意 + 意味着它将只匹配至少一个字符的注释-因为您似乎想知道注释本身,这是可以的(0长度的注释将是什么用途)?

    但是,如果要知道注释块的总数,请更改 + * (0或更多)。

    还有,为什么不试试regex呢?一开始很棘手,因为语法看起来很有趣,但它们非常强大。

        3
  •  0
  •   Michael Goldshteyn    14 年前

    怎么样:(?<=\/*)(.*)(?=*\/)

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