【问题标题】:Regex to match text between two strings, including the strings正则表达式匹配两个字符串之间的文本,包括字符串
【发布时间】:2016-05-04 01:19:16
【问题描述】:

我正在尝试通过 git 修复合并中的一些冲突,有很多

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

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

因此,匹配

谁能帮帮我?我会在文件上运行它我确定我不想要这些字符串之间的任何东西,我想这也是我在合并时没有尝试“使用他们的”标志的原因,因为我需要先查看文件.

【问题讨论】:

  • 提示:(?&lt;=)(?=) 被称为环视。他们只是看,是否有子字符串但不匹配。
  • 您使用的是什么编辑器/工具?你有多少个文件?对于少数几个文件,我个人更喜欢手工完成。
  • 超过 100 个文件
  • 我正在使用 Phpstorm
  • 那么,@Xufox,我需要的是找到那些环顾四周的等价物吗?你能告诉我我应该寻找什么来代替环视吗?

标签: regex


【解决方案1】:

只需忽略 Xufox 提到的环顾四周

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

.*? 用括号括起来,因此您可以在替换时引用它。 \1 用于第一组,\2 用于第二组,\3 用于介于两者之间的所有内容(但语法可能会有所不同。)

【讨论】:

  • 本着正则表达式的精神,您可能应该使用过
【解决方案2】:

我想你可能在这里问错了问题。实际处理合并冲突的最佳方法是使用合并工具。你应该研究一下融合之类的东西。并专门设置 git merge 工具来使用它。手动合并不好玩...

改用漂亮的 ui 来分析合并

【讨论】:

  • 谢谢,我不知道那个工具,但它仍然是矫枉过正,因为大多数文件至少有几十个这样的冲突,这就是为什么我认为正则表达式解决方案可能更快
  • @andrux 你会感到惊讶。它非常漂亮,并且有冲突是有原因的。你确定你总是想使用新代码而不是你与之冲突的代码吗?在这种情况下,您的原始问题甚至不处理关闭 >>>>>>>>> 提交消息
  • 嗯,关闭提交消息我可以搜索并用空字符串替换,无论如何它都是相同的字符串......是的,我确定总是采用新代码,我正在更新作者最新版本的php web应用程序,我只对一些文件做了一些更改,所以我修改的文件我想手动查看它们,其余的我想采取作者更改的任何内容
【解决方案3】:

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

括号主要用于组捕获,如果您愿意的话:

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

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

已测试:http://regexr.com/

【讨论】:

    猜你喜欢
    • 2014-02-04
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    相关资源
    最近更新 更多