2017-04-04 79 views
1

在vim中,我需要在引號中搜索所有字符串,例如「富」用Vim引號括起來的搜索字符串

難道一見這個正則表達式的問題? E486:找不到模式\ '([^'] *)」

:\/'([^']*)' 

Regex Tester

+0

你好(對不起我的禮貌) – AikenCura

+0

只需使用'/'([^'] *)' – anubhava

+0

供參考:有> 50個正則表達式,大多互不兼容。 Vim使用這些方言之一,而正則表達式測試程序站點使用其他方言,與Vim不兼容。我還沒有看到這樣一個瞭解Vim正則表達式的網站。 –

回答

1

第一個問題是您發現的使用比較混亂。如果您只想找到 ,請使用/。冒號不是必需的(表示 命令模式)。如果你正在使用find爲一個範圍(基本上是相同的 的事情,/只是一個空的命令和範圍),您可以使用冒號, 但無論哪種方式逃避第一個斜槓是沒有必要的。

的另一個主要問題是,括號默認情況下需要進行轉義 如果你的意思是捕獲組。所有這一切都取決於你的 'magic'選項,在閱讀幫助的/magic主題(你可以做一個 :h magic)強烈推薦。隨着「香草」 Vim的設置, 正則表達式,你需要看起來住這樣的:

/'\([^']*\)' 

有了非常神奇的使能(通過使用\v原子),這可以簡化 你原來的設計:

/\v'([^']*)' 
1

或者您可以使用

\v'(\a+)'

這個表達式執行大於y相似我們的,除了遇到嵌套的引號。在文本:

The user's first 'answer'.

正則表達式\v'(\a+)'將捕獲answer而你原來的正則表達式(由sidyll校正)\v'([^']*)'將捕獲's first '

相關問題