2017-10-11 116 views
1

對於每一行,如何刪除的"的發生和最後發生.,noninclusive之間的一切嗎?要被刪除的部分包含任意數量和有問題的(對於正則表達式)的字符,如:/\()[]|.,?"可變圖案等刪除兩個字符之間的一切都在每行

例如:

"123456789","xyxyxy","DELETE///.T.H.I.S.aaa" 
"123","abc","DELETE."\T.H.I.S\[.]".1234" 

"123456789","xyxyxy",".aaa" 
"123","abc",".1234" 

我持續失敗(可能是因爲不正確的逸出的有問題的字符?)。

回答

1

試試這個正則表達式: ((?:[^"\n]*"){5})(.*)(\..*)$

Click for Demo

說明:

  • ^ - 斷言字符串的開始
  • (?:[^"\n]*") - 匹配0+既不是任何字符的出現一"也不換行符貪婪地接着是"
  • {5} - 重複上述比賽5次。到目前爲止匹配的所有內容都在第1組中捕獲。
  • (.*) - 匹配並捕獲任何字符出現的0+ 貪婪但不是換行符。這存儲在group2中。這部分將在以後被刪除/刪除。貪婪的匹配,因爲我們現在想要達到最後的.。我們可以通過回溯(在下一步中)到達那裏
  • (\..*) - 匹配點,隨後出現0+任何字符,但在第3組
  • $換行符和存儲的 - 斷言的字符串的結尾

輸出:

之前更換:

enter image description here

更換後:

enter image description here

1

不知道它是用記事本+ +兼容,但這個表達式應該做他的工作:

((?:"[^"]*){4}").*(\..*) 

與更換:

\1\2 

實例和解釋:https://regex101.com/r/yBuUOj/3

+0

的感謝!你的初始版本(現在刪除)工作正常:'((?:「[^」] *){4}「)[^」] * \。(。*)'(刪除最後一個'.',但(***你當前的版本'((?:「[^」] *){4}「)。* \。(。*)'使得一些誤識) – user3026965

+0

對不起,我做了一些複製和粘貼這裏之間的混亂和regex101 –

+1

感謝您的線。謝謝! – user3026965

相關問題