수정자 /a 에서 정규 표현식을 Perl

할 때 정규 표현식을 사용하여 Perl 에서 사용할 수 있습니다,수정 /a.

추가 수정 /a 동작을 변경 \d, \w\s:

  • 는 경우에 한정 /a 을 지정하지 않은,이러한 집합은 다음과 같습니다 많은 캐릭터에서는 유니코드를 기반으로 합니다.
  • 의 존재는 수정 /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 캡처의 모든 것으로 간주되는 그림 에서는 유니코드,그리고 그것은 단지 10 자리 숫자 0 에서 9 까지의 호스트가 다른 문자는 다른 언어로 사용.

이 코드를 추가할 수정 /a: if ($str =~ /(\d+)/a) {,프로그램 표시 하나의 문자,숫자 4으로,이 경우에는 \d 을 의미한 10 개의 문자를 제공 합니다.

예제의 문자는 Perl 고려한 유니코드 번호를 찾을 수 있습니다 밖으로 이를 이용하여 코드:

▶ 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 일 이 포함됩상의 문자(그 는 흰색 공간에서 문자의 유니코드).

\w

을 사용할 때 /a 많은 문자 \w 일 이 포함됩 63 상징과 동일하게 작동합 로 [A-Za-z0-9_].

는 경우 /a 일 은 사용하지 않는,그것은 \w 일 을 포함한 50 개 이상의 수천 명의 다른 유니코드 문자입니다.

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.

다른 기사