【问题标题】:Regex matching whole line starting with an exclamation mark正则表达式匹配以感叹号开头的整行
【发布时间】:2022-01-09 23:34:01
【问题描述】:

我正在尝试匹配从! 开始的整行文本 使用正则表达式。

我做了这样的事情:/(!\w+\s+\S+)/ig 非常接近,但只有 2 个字。我想将单词匹配到新行。我还看到句子中间的扰流板有问题。

现场示例:http://www.rubular.com/r/MXmholsDwE

【问题讨论】:

    标签: regex ruby


    【解决方案1】:

    你只需要

    ^!.*
    

    见updated regex demo

    ^ 匹配行的开头(在 Ruby 中),! 将匹配文字 !,.* 将匹配零个或多个字符而不是换行符(如果您使用的是 Ruby,则我假设您使用了 rubular 网站)。

    如果您使用 Ruby 以外的正则表达式风格,例如 JS、PHP 或 .NET,则需要指定 /m - MULTILINE - 修饰符(例如 JavaScript 中的 /^!.*/gm)。

    【讨论】:

    • 工作就像一个魅力:),但有一件事 - 需要添加
      例外所以:^!.[^<]*
    【解决方案2】:

    如果要将所有内容都匹配到行尾:

    /(!.+)/
    

    如果你想确保它遵循!word---的格式:

    /!\w.+/
    

    【讨论】:

      【解决方案3】:

      您可以使用带有global 标志的.+ 正则表达式来匹配单独的整行。这是一个例子:

      【讨论】:

        【解决方案4】:

        如果你想为<br> 添加一个例外,你应该使用一个积极的前瞻运算符。另请注意,使用正则表达式解析 HTML 文档通常不是一件好事。

        我认为你也应该考虑<br />。因此,最终的正则表达式将是:

        ^!.+?(?=\<br\>|\<br\s*\/\>|$)
        

        它将匹配下面示例中突出显示的部分:

        !剧透示例
        没有剧透
        !spoiler
        !spoiler with more
        词
        !spoiler upto new
        线

        !中间的剧透

        示例:https://regex101.com/r/nZ0oY9/3

        【讨论】:

          【解决方案5】:

          另一种解决方案是。

          ^!\b.*$
          

          在哪里

          ^ 行首

          !比赛开始

          \b.*$ 剩下的行直到结束

          【讨论】:

            【解决方案6】:

            你也可以使用

            ^![^\n]*
            

            解释:

            ^ - 字符串的开头

            ! - 匹配 ! 字面意思

            [^\n]* - 匹配零个或多个除换行符以外的字符

            Demo

            Rubular demo

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-04-20
              • 1970-01-01
              • 1970-01-01
              • 2018-06-04
              • 1970-01-01
              • 1970-01-01
              • 2018-12-15
              相关资源
              最近更新 更多