正则表达式匹配两个字符串之间的文本,包括字符串

时间:2016-05-04 01:19:16

标签: regex

我试图通过git解决合并中的一些冲突,有很多<<<<<<< HEAD和======块我希望能够在很多文件中找到并替换为空字符串。

我发现这个正则表达式模式正确地匹配了两个字符串之间的所有内容,但它省略了开始和结束字符串,我希望能够匹配它们。

(?s)(?<=<<<<<<< HEAD).*?(?=\=\=\=\=\=\=\=)

因此,匹配&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD,=======和他们之间的所有事情都要进行搜索/替换。

任何人都可以帮助我吗?我会在文件上运行这个我确定我不想在这些字符串之间做任何事情,我想这也是为什么我没有试过&#34;使用他们的&#34; ;执行合并时标记,因为我需要先查看文件。

3 个答案:

答案 0 :(得分:3)

请忽略Xufox提到的环顾

(?s)(<<<<<<< HEAD)(.*?)(\=\=\=\=\=\=\=)

.*?包含括号,因此您可以在替换中引用它。第一组为\1,第二组为\2,两者之间为\3(但语法可能不同。)

答案 1 :(得分:2)

我想你可能会在这里提出错误的问题。实际处理合并冲突的最佳方法是使用合并工具。你应该看看像meld这样的东西。并专门设置git merge工具来使用它。手动合并并不好玩......

使用漂亮的ui来分析合并

答案 2 :(得分:0)

您想匹配冲突部分的开始和结束标记吗?

圆括号主要用于群组捕捉,如果你愿意的话:

(<<<<<<< HEAD)(.*\s)+(\s*=======)

它将创建4个组,您可以访问这些成员。

经过测试:http://regexr.com/