Pengubah /a dalam ekspresi reguler Perl

Ketika menggunakan ekspresi reguler di Perl, anda dapat menggunakan pengubah /a.

Tambahkan modifier /a perubahan perilaku \d, \w dan \s:

  • Jika pengubah /a tidak ditentukan, set ini mencakup banyak karakter Unicode.
  • Di hadapan pengubah /a, ini set karakter termasuk karakter dalam ASCII berbagai

Perubahan perilaku \D, \W dan \S.

\d

Ketika anda menentukan pengubah /a set karakter \d hanya mencakup 10 karakter — angka 0 untuk 9. Jika pengubah /a tidak ditentukan, \d berarti semua banyak karakter yang digit dalam Unicode.

Berikut adalah contoh kode:

▶ Run
#!/usr/bin/perl

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

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

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

Program ini akan menampilkan apa yang ditangkap menggunakan \d+ dan ini adalah teks ٢4௪၂၃. Dalam kode ini, pengubah /a tidak ditentukan, dan oleh karena itu \d menangkap semua yang dianggap sebagai sosok dalam Unicode, dan itu bukan hanya 10 digit dari 0 sampai 9 tetapi sejumlah karakter lain yang yang digunakan dalam berbagai bahasa.

Jika kode ini menambahkan pengubah /a: if ($str =~ /(\d+)/a) {, program menampilkan satu karakter, jumlah 4, seperti dalam kasus ini \d berarti hanya 10 karakter.

Contoh karakter yang Perl menganggap Unicode angka dapat ditemukan dengan menggunakan kode ini:

▶ 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

Ketika menggunakan /a banyak karakter \s untuk Perl versi 5.18 termasuk 5 karakter, tapi dari Perl 5.18 termasuk 6 karakter:

  • "\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}"

Jika pengubah /a tidak ditentukan, \s mencakup lebih karakter (orang-orang yang white-space karakter dalam Unicode).

\w

Ketika menggunakan /a banyak karakter \w mencakup 63 simbol dan bekerja sama sebagai [A-Za-z0-9_].

Jika /a tidak digunakan, \w mencakup lebih dari 50 ribuan yang berbeda karakter Unicode.

Perl Versi

Pengubah /a pertama kali muncul di Perl 5.14. Jika anda mencoba untuk menggunakannya sebelum 5.14, akan ada aplikasi yang error dan kode eksekusi akan dihentikan. Misalnya, kode 'abc' =~ /\w/a; pada Perl 5.10 akan menghasilkan kesalahan:

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.

Artikel lainnya