2017-07-02 49 views
2

我在VIM一個CSV文件看起來像這樣:查找並刪除所有的括號數據VIM

aaa,bbb,ccc (Friday, 23/06/17) 
ddd,eee,fff (Saturday, 24/06/17) 
ggg,hhh,iii (Sunday, 25/06/17) 

我想刪除所有括號&其內容是這樣的:

aaa,bbb,ccc 
ddd,eee,fff 
ggg,hhh,iii 

我試圖這樣做,但它只是刪除括號

:%s/(*)//g 

回答

6

你幾乎有了它,你就錯過了.

:%s/(.*)//g 

的點中的所有字符相匹配,因此使用.*手段找到任意長度的字符的所有字符串

編輯:

由於sundeepg如果匹配在同一行中的所有事件並且.*將貪婪地匹配從第一個(到行中的最後一個),所以不會有另一個t o匹配在同一行中,因此可以將其刪除。您只能匹配([^(]*)這個簡單的大括號對,這意味着找到任何不包含(的字符串,該字符串被()包圍。因此,修改後的建議是使用:

:%s/([^(]*)//g 
+1

沒錯!感謝您的幫助! – astrasleepz

+0

或只是':%s /(.*)'因爲'g'在這個正則表達式中無效 – Sundeep

+0

爲什麼'g'無效? – EarthDragon

2

()每一行內:%s/(.*)//gda(如果要刪除幾個離開他人。

+0

或者':%norm f(da)'......貪婪的正規表達式不需要'g'標誌,它會將'1 3(foo)和(bar)'變爲'1 3',而不管' g'標誌......在這種情況下,使用':%s /([^)] *)// g' – Sundeep

相關問題