请解释这个正则表达式

时间:2013-05-22 01:16:53

标签: regex perl

  ^[[:space:]]*@

我无法弄清楚[[:space:]]*在上述正则表达式中的含义。请帮忙,谢谢!

3 个答案:

答案 0 :(得分:9)

[:space:]POSIX character class,匹配单词中的All whitespace characters, including line breaks

换句话说,[:space:]\s相同(因为Perl 5.18 [1]

http://www.regular-expressions.info/posixbrackets.html


  1. 在5.18之前,垂直标签(U + 000B)未包含在\s中。

    $ diff -u <( unichars -au '\s' ) <( unichars -au '[[:space:]]' ) \
        && echo 'no difference'
    --- /dev/fd/63  2013-05-21 22:08:03.000000000 -0400
    +++ /dev/fd/62  2013-05-21 22:08:03.000000000 -0400
    @@ -1,5 +1,6 @@
      ---- U+00009 CHARACTER TABULATION
      ---- U+0000A LINE FEED (LF)
    + ---- U+0000B LINE TABULATION
      ---- U+0000C FORM FEED (FF)
      ---- U+0000D CARRIAGE RETURN (CR)
      ---- U+00020 SPACE
    

答案 1 :(得分:4)

这是一个POSIX字符类,在这种情况下是一种表示“任何空白字符”的Unicode友好方式。

请参阅this page,向下滚动到“POSIX字符类”。

答案 2 :(得分:0)

有很多方法可以表达像“空白字符”这样的东西,这就是其中之一。集合[...]允许包含[:space:]之类的内容,以便为集合添加空格字符。

这读作:

^ # At the beginning of string...
[[:space:]]* # ...zero or more whitespace characters...
@ # ...followed by an at sign.