正则表达式:如何捕获多行内容

时间:2016-07-18 09:08:16

标签: regex

解决git冲突时,我正在尝试使用正则表达式从源文件中捕获冲突,内容如下:

<<<<<<< HEAD
    line1
    line2
    ... 
=======

这是我的版本:

^<<<<<<< HEAD\n\t.+\n\t.+\n\t=======\n\t  

显然,我的版本仅适用于固定行,因为我需要重复.+\n\t来匹配它们。但真的不知道如何正确地做到这一点?有什么提示吗?

[更新]我正在使用Boost库中的Perl兼容正则表达式(PCRE)引擎。

2 个答案:

答案 0 :(得分:1)

您可以使用

(?sm)^<<<<<<< HEAD.*?\n\t*=======\n*\t*

请参阅regex demo

<强>解释

  • (?sm) - 内联修饰符:s使.匹配换行符以及任何其他字符,m使^匹配行开头和$匹配行结束
  • ^ - 行的开头
  • <<<<<<< HEAD - 文字字符串<<<<<<< HEAD
  • .*? - 0+任何字符,尽可能少,直到第一个
  • \n\t* - LF后跟0 +标签
  • ======= - 文字子字符串
  • \n*\t* - (不确定你真的需要它)0+ LFs后跟0 +标签。

答案 1 :(得分:0)

你用什么语言? 该选项允许“。”匹配新行和任何字符,以便它匹配多行字符串。

添加此项需要了解您编码的语言。