[英]Regex Delete Lines with delimiter `<<<<<<< HEAD` and `=======` in Reverted Commit in Git in Notepad++
使用错误的正则表达式,我不小心删除了许多我不应该删除的行。 还原更改后(Git 版本控制的一个功能),我有 markdown 文件现在看起来像这样:
<<<<<<< HEAD
There was a sentence here:
There was a third line here.
=======
There was a sentence here:
There was a second line here.
There was a third line here.
There were any number of lines here.
>>>>>>> parent of <commit ID> (<commit msg>)
我的要求是使用<<<<<<< HEAD
和=======
作为分隔符并删除分隔符之间的所有内容,包括分隔符。 之后我将分别删除>>>>>>> parent of <commit ID> (<commit msg>)
。
我的正则表达式( .*
)匹配分隔符之间的多行不成功。 我正在使用[{[(*"'!->1-9a-zA-ZÀ-ŰØ-űø-ÿ]+
而不是简单的w+
来满足我可能想要使用的任何换行符/单词。我如果这对您很重要,请在每个句子后使用软换行符(两个空格)。(如果您可以匹配分隔符之间的所有内容,则可能无关紧要。)
预期结果:
There was a sentence here:
There was a second line here.
There was a third line here.
There were any number of lines here.
>>>>>>> parent of <commit ID> (<commit msg>)
正如我所说,之后我将处理>>>>>>> parent of <commit ID> (<commit msg>)
。
此外,不言而喻,定界符之间并不总是两条线。 不同的行数会导致我的问题。
除了使用非贪婪匹配之外,您还可以在它们之间使用负前瞻匹配行,这些匹配行不仅包含=======
更高效:
^<<<<<<< HEAD(?:\R(?!=======$).*)*+\R=======$
解释
^
字符串开头<<<<<<< HEAD
匹配字面意思(?:
非捕获组
\R
匹配任何 unicode 换行符(?!=======$)
负前瞻,断言该行不是=======
.*
匹配整行)*+
关闭非捕获组并可选地使用所有格量词重复它\R
匹配任何 unicode 换行符=======
字面匹配$
字符串结尾
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.