/a 经常表达Perl

当使用经常表现在Perl,可以使用的修改 /a.

添加剂 /a 改变行为 \d, \w\s:

  • 如果修改 /a 不是指定的,这些组包括许多符Unicode。
  • 在存在改 /a,这些字符集包括只字在ASCII码范围内

改变行为 \D, \W\S.

\d

当你指定的修改 /a 字符集 \d 仅包括10个字 数字 09. 如果修改 /a 是不是指定的, \d 意味着所有 一个很大的字符数字在统一编码。

这里是一个例子码:

▶ Run
#!/usr/bin/perl

use utf8;
use open qw(:std :utf8);
use strict;
use warnings;

my $str = '٢4௪၂၃';

if ($str =~ /(\d+)/) {
    print $1;
}

该程序将显示什么被抓获,使用 \d+ ,这是该案文 ٢4௪၂၃. 在这个码,修改 /a 不是指定的,因此 \d 捕获所有被认为是一个图 在Unicode,它不只是10个数字,0至9,但其他人物, 使用不同的语言。

如果这代码添加剂 /a: if ($str =~ /(\d+)/a) {、程序 显示一个单一的字符,数 4,因为在这种情况下 \d 只是意味着10个字符。

例符Perl认为Unicode数字可以发现,通过使用这个代码:

▶ Run
#!/usr/bin/perl

use utf8;
use open qw(:std :utf8);
use strict;
use warnings;

foreach my $i (0..65535) {
    print chr($i) if chr($i) =~ /\d/;
}

\s

当使用 /a 许多人物 \s 到Perl版5.18包括5个字符, 但是,从Perl5.18包括6个字:

  • "\t", chr(9), "\N{CHARACTER TABULATION}"
  • "\n", chr(10), "\N{LINE FEED}"
  • "\x0B", chr(11), "\N{LINE TABULATION}" —Perl5.18
  • "\f", chr(12), "\N{FORM FEED}"
  • "\r", chr(13), "\N{CARRIAGE RETURN}"
  • ' ', chr(32), "\N{SPACE}"

如果修改 /a 不是指定的, \s 包括更多的人物(这些 这是空白人物在Unicode).

\w

当使用 /a 许多符 \w 包括63号工作和相同的 作为 [A-Za-z0-9_].

如果 /a 没有使用,它 \w 包括超过50万的不同Unicode符。

Perl版本

/a 第一次出现在Perl5.14. 如果你试图使用它 前5.14,会有错误和执行代码将被停止。 例如,代码 'abc' =~ /\w/a; 在Perl5.10将产生一个错误:

Bareword found where operator expected at script.pl line 3, near "/\w/a"
    (Missing operator before a?)
syntax error at script.pl line 3, near "/\w/a"
Execution of script.pl aborted due to compilation errors.

其他文章