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

如何在regex中允许单行中断?

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

    我将两个标记之间的文本匹配为

    /open(.*?)end/
    

    \n s

    2 回复  |  直到 6 年前
        1
  •  1
  •   Wiktor Stribiżew Cristian Lupascu    6 年前

    你可以用

    '~open(?:(?!open|end).)*(?:\R.*?)?end~'
    

    regex demo

    细节

    • open -起始子串
    • (?:(?!open|end).)* end start 子字符串,尽可能多
    • (?:\R.*?)? -一种可选的换行符序列,后跟除换行符以外的任何0+字符(尽可能少)
    • 结束 -尾随子串。
        2
  •  1
  •   Toto    6 年前

    /open([^\n\r]*\R?[^\n\r]*)end/
    

    哪里

    • [^\n\r]*
    • \R? 表示0或1任何类型的换行符