1
  ^[[:space:]]*@

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

4

3 回答 3

9

[:space:]是在单词POSIX character class中匹配的 a。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
    
于 2013-05-22T01:24:53.597 回答
4

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

请参阅此页面,向下滚动到“POSIX 字符类”。

于 2013-05-22T01:25:29.013 回答
0

有多种表达“空白字符”之类的方式,这就是其中之一。该集合[...]允许包含诸如[:space:]向集合中添加空格字符之类的内容。

内容如下:

^ # At the beginning of string...
[[:space:]]* # ...zero or more whitespace characters...
@ # ...followed by an at sign.
于 2013-05-22T01:26:14.093 回答