正規表現を使用して複数の文字列をキャプチャする次の行があります。
l = '15 1180 62444 e0e0 049c f3ec 104';
この行で動作するように、次の正規表現を拡張していました。
d = regexpi(l, '([0-9a-f]+)\s?', 'tokens');
この行を実行すると、それが得られlength(d) == 7
ます。正規表現は最初に出現したもの、つまりlength(d) == 1
andのみに一致するべきではありませんd{1} == '15'
か?
価値のあることとして、Perl で同じ正規表現を使用したところ、パターンの最初のインスタンスのみに一致することがわかりました (これは私が予想したことです)。
my $l = ... #defined above already
$l =~ m/([0-9a-f]+)\s?/i;
if (! defined($2)){ # $2, $3, ..., $n will be defined for n matches
print "Didn't match twice!\n"; # this prints when I execute the script
}