想象一下,我們必須在vi/vim中構造一個正則表達式。我們必須使用反斜槓來轉義哪些特殊字符?從perl的角度來看vim regexps:用反斜線轉義哪些特殊字符
通過特殊字符表示以下字符:{} |() - [] + *。^ $?我們不得不逃避:{|()+?
並保留原樣:}^$ *。[] -
謝謝。
p.s. AFAIK,我們沒有'?'在vi/vim中的字符,但是'=',而應該也是通過反斜槓逃脫。
想象一下,我們必須在vi/vim中構造一個正則表達式。我們必須使用反斜槓來轉義哪些特殊字符?從perl的角度來看vim regexps:用反斜線轉義哪些特殊字符
通過特殊字符表示以下字符:{} |() - [] + *。^ $?我們不得不逃避:{|()+?
並保留原樣:}^$ *。[] -
謝謝。
p.s. AFAIK,我們沒有'?'在vi/vim中的字符,但是'=',而應該也是通過反斜槓逃脫。
我認爲magic characters上的Vim文檔會給你一個確定的列表。
我認爲最簡單的方法,那將無論Vim的magic
設定的工作,是
let re = '\V' . escape(fixed_string, '\')
\V
從完全禁止魔法這點在RE中指向。這意味着任何沒有用單個反斜槓(好吧,技術上用奇數個反斜槓)的東西都是正常字符。由於我們在固定字符串中避免了任何反斜槓,因此它不能包含任何魔法字符。
請記住,使用\V
實際上,您必須爲所有RE元字符加上反斜槓前綴。所以,如果你正在尋找一個完全由固定字符串的一條線,你會
let full_line_re = '\V\^' . escape(fixed_string, '\') . '\$'
而且記住,Vim的ignorecase
和smartcase
設置會影響再次行爲。 \C
(區分大小寫)和\c
(區分大小寫)交換機的工作方式與\V
的工作方式相同:它們將覆蓋其後的任何正則表達式部分的這些設置。
'\?'和'\ ='做同樣的工作。如果你激活*非常魔法*模式,那麼'。?'將表示*一個或沒有字符*。 – ZyX 2011-03-19 02:02:36