[英]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.