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

删除带有regex的行之前的内容

  •  1
  • Googlebot  · 技术社区  · 6 年前

    我用 preg_replace

    unnecessary stuff
    unnecessary stuff
    DELETE ME and some more stuff
    This line should be the beginning
    the rest.
    

    具有

    /^.{0,1000}DELETE ME/is
    

    DELETE ME 我也是?

    我用 .{0,1000}

    2 回复  |  直到 6 年前
        1
  •  1
  •   anubhava    6 年前

    您可以使用此正则表达式来匹配:

    /^.{0,1000}DELETE ME[^\r\n]*\R/is
    

    RegEx Demo

    细节:

    • [^\r\n]* \r \n
    • \R :匹配任何unicode行尾字符
        2
  •  1
  •   Wiktor Stribiżew    6 年前

    您可以使用内联修饰符来控制 . 比赛:

    '~(?s)^.{0,1000}DELETE ME(?-s).*\R?~i'
      ^^^^                   ^^^^^
    

    看到了吗 regex demo

    这个 (?s) . 字符类外部匹配任何字符,包括所有换行符,以及 (?-s) 将关闭此点模式,并且 它的右边的图案将停止匹配换行符。

    看到了吗 more details from rexegg.com :

    (?秒)
    (?秒) ,例如 (?s)BEGIN .*? END . 请参见上的部分 inline modifiers 有关三个附加特性(在Python中不可用)的有趣细节:在中字符串中打开它,在中字符串中关闭它 (?s:foo) .

    then :

    除了红宝石, (?秒) 激活“单线模式”,即。 DOTALL 模式,允许点匹配换行符。在Ruby中,相同的函数由 (?m)

    另外,使用 \R? 你也将匹配在整个字符串的结尾,如果 DELETE ME 在字符串的最后一行显示为 \R? 匹配1或0个换行符。