0
我是一個Perl noob,我一直在試圖開發一個簡單的腳本來從正則表達式中捕獲一些值。到目前爲止,我已經建立了以下程序:Perl中的錯誤:正則表達式中的嵌套量詞
#!/usr/bin/perl
use strict;
$/ = '';
my $PM = qr{\b[A-Z][\w-]*\w};
my $de = qr{d[aoe]s?};
my $s = qr{[\n ]};
my $np = qr{$PM (?: $s $PM | $s $de $s $PM)*}x;
my $window_size = 7;
my $window = qr{($np) (?: $s+ (\w+))*};
while(<>){
while(/($np) (?: $s+ (?: [\w-]+ | ($np))) ** {0..$window_size} /xg){
print("\$1: $1 and \$2: $2 \n");
}
}
然而,當我嘗試運行這段代碼,它讓我看到以下錯誤:
Nested quantifiers in regex; marked by <-- HERE in m/((?^ux:(?^u:\b[A-Z][\w-]*\w) (?: (?^u:[\n ]) (?^u:\b[A-Z][\w-]*\w) | (?^u:[\n ]) (?^u:d[aoe]s?) (?^u:[\n ]) (?^u:\b[A-Z][\w-]*\w))*)) (?: (?^u:[\n ])+ (?: [\w-]+ | ((?^ux:(?^u:\b[A-Z][\w-]*\w) (?: (?^u:[\n ]) (?^u:\b[A-Z][\w-]*\w) | (?^u:[\n ]) (?^u:d[aoe]s?) (?^u:[\n ]) (?^u:\b[A-Z][\w-]*\w))*)))) ** <-- HERE {0..7}/at ./main.pl line 22, <> chunk 1.
這是爲什麼不工作?
編輯:我試圖使用**
運算符作爲一般量詞,後面是一個範圍。我已經讀過,它相當於{範圍最小,範圍最大}量詞
你想在這裏表示什麼'**'? –
你試圖匹配什麼字符串? – Barmar
你似乎混淆了Perl和Perl6。 '** {0..7}'看起來像Perl6語法所要做的。 – melpomene