當我使用捕獲組創建regex
變量時,整個匹配成功,但捕獲組爲Nil
。Perl 6正則表達式變量和捕獲組
my $str = 'nn12abc34efg';
my $atom =/\d ** 2 /;
my $rgx =/($atom) \w+ ($atom) /;
$str ~~/$rgx/;
say ~$/; # 12abc34
say $0; # Nil
say $1; # Nil
如果我修改程序,以避免$rgx
,一切正常:
my $str = 'nn12abc34efg';
my $atom =/\d ** 2 /;
my $rgx =/($atom) \w+ ($atom) /;
$str ~~/($atom) \w+ ($atom) /;
say ~$/; # 12abc34
say $0; # 「12」
say $1; # 「34」
有趣的問題。我不確定爲什麼會發生這種情況,但是您可以使用例如「$ rgx」作爲命名正則表達式。 '我的正則表達式rgx {($ atom)\ w +($ atom)}'。然後在'$ str〜/ /'之後,我們會有 '$ [0]'代表第一個捕獲組(例如)。 –
另請參見[如何插入變量到Perl 6正則表達式?](https://stackoverflow.com/q/40883160/2173773) –
謝謝!不知道名爲正則表達式。 –