我有这样的文字(1或0标签+第一行的多个空格):
(tab) There are a tab and 4 whitespaces before me. // line 1
(tab) There are a tab and 6 whitespaces before me. // line 2
There are 6 whitespaces before me. // line 3
There are 4 whitespaces before me. // line 4
当我使用^[\t\s]\s*
时,只有第1,2行匹配,第3,4行不匹配,为什么?
(当我使用^\s*
时,第3行和第4行可以匹配。)
谢谢!
答案 0 :(得分:2)
事实证明,您无法使用\s
来匹配[]
中的空格。
只需使用在
[]
内匹配即可。
答案 1 :(得分:1)
这很有趣。我不确定为什么\s
在[]
括号内不起作用。也许是因为[]
定义了明确的字符,而\s
是不明确的(它可以代表多个字符)。换句话说,\s
代表任何空格,包括标签(\t
)。但是,如果您在这种情况下明确指定了一个空格(^[\t ]\s*
),它将起作用。
答案 2 :(得分:0)
如上所述,\s
在[]
内不起作用,您也可以使用[:blank:]
字符类:
^[[:blank:]]\+