2016-07-06 43 views
1
[0-9]* (-)?[0-9]* q 

似乎這正則表達式不VIM工作下面的文本爲什麼下面的正則表達式在vim中不起作用? (具體而言,?在正則表達式)

34778965 -1 q一些文字在這裏

[解決]

謝謝!我意識到這一切都必須逃脫。有什麼感覺不一致的是需要逃脫像\?但有些不是,比如*或$。 vimregex.com幫助。

+3

您是否檢查http://vimregex.com/? –

+1

您可以使用'\ d'作爲數字。 '\ d \ + - \? \ d \ -'應該可以工作。 – SibiCoder

+1

我從來沒有使用過Vim,但是從我在Federico的鏈接中看到的內容來看,您需要爲組工作避開括號。嘗試用[[0-9] * \( - \)?[0-9] * q' 您可能還必須轉義'-',不確定這個 – Altomre

回答

3

您可以使用\d來表示vim正則表達式中的數字。

爲您的文字一個很好的模式將是

 \d\+ -\? \d\+ q 

一般來說,Vim假設人物作爲自己的文字的。所以,如果你給\d+,它應該被理解爲任何數字後跟一個加號。所以,你將不得不在模式中逃避這樣的正則表達式特定字符。

1

在Vim中,你需要逃避一些常見的正則表達式特殊字符,以作爲特殊的操作符。例如。 (-)羣必須以非常靈活的模式編寫爲\(-\)。在一個非常神奇的方式,你的模式會工作作爲爲 - :%s/\v[0-9]* (-)?[0-9]* q/replace/g

在你的情況,你不因爲你量化括號內的一個連字符需要分組可言,這樣他們就可以將其刪除:

[0-9]* -\? [0-9]* q 
相關問題