vim:无法匹配制表符后的空格

vim:无法匹配制表符后的空格,vim,Vim,我有这样的文本(1或0制表符+行首多个空格): 当我使用^[\t\s]\s*时,只有第1、2行匹配,第3、4行不匹配,为什么 (当我使用^\s*时,第3行和第4行可以匹配。) 谢谢 这很有趣。我不确定为什么\s在[]括号内不起作用。可能是因为[]定义了显式字符,而\s不明确(它可以代表多个字符)。换句话说,\s代表任何空白,包括一个选项卡(\t)。但是,如果在这种情况下显式指定一个空格(^[\t]\s*),它将起作用。这很有趣。我不确定为什么\s在[]括号内不起作用。可能是因为[]定义了显式字符

我有这样的文本(1或0制表符+行首多个空格):

当我使用
^[\t\s]\s*
时,只有第1、2行匹配,第3、4行不匹配,为什么

(当我使用
^\s*
时,第3行和第4行可以匹配。)


谢谢

这很有趣。我不确定为什么
\s
[]
括号内不起作用。可能是因为
[]
定义了显式字符,而
\s
不明确(它可以代表多个字符)。换句话说,
\s
代表任何空白,包括一个选项卡(
\t
)。但是,如果在这种情况下显式指定一个空格(
^[\t]\s*
),它将起作用。

这很有趣。我不确定为什么
\s
[]
括号内不起作用。可能是因为
[]
定义了显式字符,而
\s
不明确(它可以代表多个字符)。换句话说,
\s
代表任何空白,包括一个选项卡(
\t
)。但是,如果在本例中明确指定一个空格(
^[\t]\s*
),它将起作用。

结果是,您不能使用
\s
来匹配
[]
中的空格。
只需使用
[]

中匹配它,您就无法使用
\s
来匹配
[]
中的空白。
只需使用
[]

中进行匹配,如前所述
\s
[]
中不起作用,或者您可以使用
[:blank:][/code>字符类:

^[[:blank:]]\+

如前所述,
\s
[]
中不起作用,或者您可以使用
[:blank:][/code>字符类:

^[[:blank:]]\+

是的,这就是我尝试和发现的(经过46次尝试)。谢谢。是的,这就是我尝试和发现的(经过46次尝试)。谢谢。正确
\t
是的转义序列(如
\n
),但
\s
是一个特殊的原子。必须这样组合:
\(\s\\[\t]\)
正确
\t
是的转义序列(如
\n
),但
\s
是一个特殊的原子。它们必须这样组合:
\(\s\\[\t]\)