Sửa đổi /a trong biểu thức thông thường Perl

Khi sử dụng biểu thức thông thường trong Perl, bạn có thể sử dụng các sửa đổi /a.

Thêm sửa đổi /a thay đổi các hành vi \d, \w\s:

  • Nếu các sửa đổi /a là không được xác định, những bộ bao gồm rất nhiều nhân vật từ Mỹ.
  • Sự hiện diện của một bổ /a, các nhân vật bộ chỉ bao gồm nhân vật trong bộ TỔNG bộ

Hành vi thay đổi trong \D, \W\S.

\d

Khi bạn xác định sửa đổi /a nhân vật đặt \d bao gồm chỉ có 10 nhân vật — những con số 0 để 9. Nếu các sửa đổi /a không được xác định, \d có nghĩa là tất cả rất nhiều nhân vật đó là chữ số trong trường hợp.

Đây là một ví dụ mã:

▶ Run
#!/usr/bin/perl

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

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

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

Chương trình sẽ hiển thị những gì được ghi lại bằng \d+ và đây là văn bản ٢4௪၂၃. Trong này mã, các sửa đổi /a là không được xác định, và do đó \d bắt tất cả mà được coi là một con số trong trường hợp, và nó không chỉ là 10 số từ 0 tới 9 nhưng một loạt các nhân vật khác mà được sử dụng trong ngôn ngữ khác nhau.

Nếu mã này thêm sửa đổi /a: if ($str =~ /(\d+)/a) {, các chương trình hiển thị một nhân vật duy nhất, số 4, như trong trường hợp này \d có nghĩa là chỉ cần 10 kí tự.

Ví dụ của nhân vật đó Perl coi Unicode con số có thể tìm ra bằng cách sử dụng mã này:

▶ 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

Khi sử dụng /a nhiều nhân vật \s đến bản Perl 5.18 gồm có 5 nhân vật nhưng từ Perl 5.18 bao gồm 6 nhân vật:

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

Nếu các sửa đổi /a không được xác định, \s bao gồm nhiều nhân vật (những đó là không nhân vật trong trường hợp).

\w

Khi sử dụng /a nhiều nhân vật \w bao gồm 63 biểu tượng và hoạt động như vậy như [A-Za-z0-9_].

Nếu /a là không được sử dụng nó \w bao gồm hơn 50 ngàn khác nhau chữ trung quốc.

Các Bản Perl

Sửa đổi /a lần đầu tiên xuất hiện trong Perl 5.14. Nếu anh cố gắng sử dụng nó trước khi 5.14, đó sẽ là một lỗi mã thực hiện sẽ được dừng lại. Ví dụ, mã 'abc' =~ /\w/a; trên Perl 5.10 sẽ tạo ra một lỗi:

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.

Các bài viết khác