キャプチャグループで変数regex
を作成すると、全体の一致はOKですが、キャプチャグループは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
を回避するためにプログラムを変更する場合、すべてが期待どおりに動作:
Regex object coerced to string (please use .gist or .perl to do that)
私たちに何かを伝えます:
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) –
ありがとう!!名前付き正規表現について知らなかった。 –