【问题标题】:How to match a multi-line comment with regex如何将多行注释与正则表达式匹配
【发布时间】:2018-01-07 20:05:00
【问题描述】:


我想用正则表达式匹配多行注释。评论类型为:

/*
    This is a comment.
*/

我试试这个代码:

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

问题图片是here
谢谢。

【问题讨论】:

  • 您使用什么工具或语言?
  • 我正在为 Atom 文本编辑器制作一个语法包。那是CoffeeScript的语言。
  • 我不熟悉 Atom 正则表达式,但问题似乎是您的正则表达式未在多行模式下运行。如果你能弄清楚如何制作正则表达式多行,它应该可以工作。
  • 我不知道。
  • [\s\S]*? 而不是 .*? 可能会帮助你。

标签: regex comments match multiline


【解决方案1】:

此正则表达式匹配所有多行 cmets,例如多行上的 /* ... */,即使其中包含 */

\/\*(([^\*]|\*(?!\/))*)\*\/

【讨论】:

    【解决方案2】:

    这个regex 应该会找到所有评论:

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

    【讨论】:

      【解决方案3】:

      问题解决了!
      我使用此代码:

      {
            'begin': '\\/\\*'
            'end': '\\*\\/'
            'name': 'comment.block.documention.mylanguage'
      },
      

      【讨论】:

        【解决方案4】:

        根据您使用的正则表达式引擎,匹配多个行字符串时应用不同的规则。

        假设您使用的是 PCRE(在 PHP 中),此模式不匹配,因为默认情况下 PCRE 中的 . 不匹配换行符。也可以使用this pattern 匹配换行符:

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

        您也可以use your original pattern 并指定/s(单行)模式,但在这种情况下,前导和尾随换行符也会被捕获。

        【讨论】:

        • 在链接中确实有效。但在 Atom 文本编辑器中不起作用。
        猜你喜欢
        • 2013-04-20
        • 1970-01-01
        • 1970-01-01
        • 2012-10-26
        • 2011-10-29
        • 2010-11-14
        • 2014-04-18
        • 2012-10-12
        • 2021-09-03
        相关资源
        最近更新 更多