vim:为什么空白字符不在括号表达式中工作,但是\ n呢

时间:2015-08-20 03:17:39

标签: regex vim

例如,vim中的put / \ s将匹配任何空格,但/ [\ s]不匹配。

我认为这是因为https://en.wikipedia.org/wiki/Regular_expression#POSIX_basic_and_extended中所述的括号表达式中不允许使用反斜杠转义符,但后来我测试了/ [\ n],它正确地匹配了行尾。

为什么会出现这种情况?有没有文件描述这种行为?

1 个答案:

答案 0 :(得分:2)

Vim使用自己品牌的正则表达式语法,这是AMAIK,未在维基百科上记录。像Vim一样,它已在Vim中记录,:help pattern,并且在线也有a good introduction

收藏集包含单个字符。由于\s本身是空白字符的集合而不是单个字符,因此它不能包含在另一个集合中。如果要在集合中包含空格字符,则必须逐个包含它们:[ \t]

[\n]有效,因为\n是一个字符。

:help pattern
:help /[]
:help /[\n]