想象一下,我们必须在vi / vim中构建一个正则表达式。我们必须用反斜杠逃脱哪些特殊字符?
特殊字符是指以下字符:{} |() - [] + *。^ $?
似乎我们必须逃避:{|()+?
并保持原样:} ^ $ *。[] -
感谢。
P.S。 AFAIK,我们没有'?' vi / vim中的字符,但是'='代替,也应该用反斜杠转义。
答案 0 :(得分:3)
我认为magic characters上的Vim文档会为您提供明确的清单。
答案 1 :(得分:2)
在vim中:
:帮助魔术
答案 2 :(得分:1)
我认为无论vim的magic
设置如何,最简单的方法是
let re = '\V' . escape(fixed_string, '\')
\V
从RE中的那个点开始完全禁用魔法。这意味着任何前面没有单个反斜杠的东西(好的,技术上是奇数个反斜杠)都是正常的字符。由于我们在固定字符串中转义任何反斜杠,因此不能包含任何魔术字符。
请记住,在\V
生效的情况下,您必须使用反斜杠作为任何RE元字符的前缀。因此,如果您正在寻找一条完全由固定字符串组成的行,您可以
let full_line_re = '\V\^' . escape(fixed_string, '\') . '\$'
另请注意,vim的ignorecase
和smartcase
设置会影响RE行为。 \C
(区分大小写)和\c
(不区分大小写)开关的工作方式与\V
相同:它们将覆盖跟随它们的任何正则表达式部分的设置。< / p>