2017-06-22 30 views
3

輸入:比賽的一切 - 記事本++

start 
some 
T1 
random 
T2 
text 
T3 
end 

應導致:

start 
T1 
T2 
T3 
end 

我嘗試使用

>(?<=start)[\S\s]*?(?=end) 

匹配的開始之間的一切,並最終

and excl UDE T1 T2 T3有:

^(?!T\d)

是否有可能將它們組合成可以粘貼到記事本++的人不熟悉編寫代碼來做到這一點通過幾個步驟一個正則表達式?

+0

不,這是不可能的。使用PythonScript更容易。另外,可以寫一個正則表達式,但是需要幾個* Replace All *命令來刪除所有不必要的Tn行,然後用正則表達式來獲取'start \ K(?s:。*?)(?=結束)'可以使用。 –

回答

1

您可以使用正則表達式:

        查找:^(?!T\d|start).*\R(?=(^(?!start$).*\R)*end$)
        替換:(空)
        .匹配換行符:

點擊 「全部替換」

這些假設:

  • startend分隔符應各自對自己的線(所以不​​或start ///)的正文,
  • 他們應該以正確的順序成對出現(所以首先start,然後end
  • 他們不應該是嵌套,所以start之後不能再有start之前,你有一個end

超前使得這是一個相當低效的正則表達式,因爲每次比賽都需要再次檢查文本,直到下一個end

+0

謝謝,也指出了限制。但有一個問題,即在'開始'分隔符之前有超過50行的文本文件中的所有內容都會被匹配。即使每50行都是一樣的。 –

+0

我再次嘗試,並且極限不是50,而是191.我嘗試在分隔符開始之前添加191行「TEST」。這是爲什麼? –

+0

這看起來像Notepad ++中的一個限制,因爲在正則表達式本身中絕對沒有這個原因。我認爲在一定數量的行和/或字符後,前瞻會中止,這不應該完成。 – trincot