2012-09-28 38 views
3

所以我們可以說我有這個在我的搜索文件查找使用vim的正則表達式複製vim的連續串


BEZ,BEZ
Foobar的

我要搜索BEZ,貝茲通過使用正則表達式。

這是我的,我知道它甚至不是正確的。

:%s/\([a-zA-Z]\),\([a-zA-Z])/\1,\1,\1/g 

所以基本上我想要做的就是讓 「BEZ,BEZ」 變成 「BEZ,BEZ,BEZ」

說真的,我很爲難如何找到2名連續的等價的字符串。

+0

我不認爲你可以像這樣在vim中測試與regex的平等 - 你需要使用更高級別的工具,也許gawk –

+0

你可以,檢查我的答案:) – Hassek

回答

4

怎麼樣:

%s/\(\w\+\), \1/\1, \1, \1/g 

它甚至在結束表達整個匹配之前捕捉括號之間的表達式,非常整潔吧?

+0

平等測試在哪裏? –

+0

第一場比賽,這意味着括號內的內容保存在'\ 1'中,所以當你在同一個句子中這個'\ 1'匹配你可以確定它是相同的表達 – Hassek

+0

得到你 - 我的錯誤 - upvoting –

1

您使用捕獲組,如:

(\w+)\W+\1 

,但我不記得了VIM相當於這樣的正則表達式。

我測試使用RegexPal和輸入你給

Test Equality in RegexPal

編輯

找到Back References in Vim

+0

平等測試在哪裏? –

+0

@AdrianCornish請解釋 – gtgaxiola

+0

OP的問題標題是'在vim中使用vim regex查找重複的連續字符串'您在哪裏測試匹配是否相同? –