Modifikator /a in den regulären Ausdrücken von Perl

Bei der Verwendung von regulären Ausdrücken in Perl können Sie den Modifikator /a.

Hinzufügen des Anfragewandlers /a ändert das Verhalten \d, \w und \s:

  • Wenn der Modifikator /a nicht angegeben wird, wird diese sets umfassen eine Vielzahl von Zeichen aus dem Unicode.
  • Bei Vorhandensein von Modifikator /a, diese Zeichensätze enthalten nur Zeichen aus dem ASCII

Ebenso ändert sich das Verhalten \D, \W und \S.

\d

Bei der Angabe der Modifikator /a Zeichensatz \d umfasst nur 10 Zeichen — die zahlen von 0 bis 9. Wenn der Modifikator /a nicht aufgeführt ist, dann \d bedeutet alle viele Zeichen sind die Ziffern in Unicode.

Hier ist der Beispielcode:

▶ Run
#!/usr/bin/perl

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

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

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

Das Programm zeigt die Tatsache, dass wurden mit Hilfe \d+ und es wird der Text ٢4௪၂၃. In diesem Code Modifier /a nicht angegeben ist, und deshalb \d erfasst alles, was gilt als Zahl in Unicode, und es ist nicht nur die 10 Ziffern von 0 bis 9, sondern auch eine Vielzahl von anderen Zeichen, die verwendet in verschiedenen Sprachen.

Wenn in diesen Schlüssel fügen Sie den Modifikator /a: if ($str =~ /(\d+)/a) {, das Programm zeigt ein Symbol die Anzahl der 4, da in diesem Fall \d bedeutet nur 10 Zeichen.

Beispiele von Symbolen, die denkt Perl Unicode-zahlen finden Sie mit Hilfe des Codes:

▶ 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

Bei der Verwendung /a - Zeichensätze \s auf die Version Perl 5.18 enthält 5 Zeichen, und ab Perl 5.18 enthält 6 Buchstaben:

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

Wenn der Modifikator /a nicht angegeben wird, wird \s enthält mehr Zeichen (diejenigen, die sind пробельными Zeichen in Unicode).

\w

Bei der Verwendung /a viele Zeichen \w umfasst 63 Zeichen und funktioniert genauso wie [A-Za-z0-9_].

Wenn /a nicht verwenden, dann \w umfasst mehr als 50 tausend verschiedenen Unicode-Zeichen.

Version Perl

Modifikator /a erschien zuerst in der Version 5.14. Wenn Sie versuchen, es zu benutzen bis 5.14, dann wird der Fehler und die Codeausführung gestoppt wird. Zum Beispiel, Code 'abc' =~ /\w/a; auf Version Perl 5.10 Fehler:

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.

Andere Artikel