私はPerlと正規表現の経験が豊富です。しかし、これは私を夢中にさせています。私はそれに対する答えを見つけることができず、その理由もわかりません。次のコードを見てください。
my $str = 'Hello[world]';
say $str =~ m/\w+\[.*?\]/ ? 'Yes' : 'No';
say $str =~ m[\w+\[.*?\]] ? 'Yes' : 'No';
say $str =~ m(\w+\[.*?\]) ? 'Yes' : 'No';
これの出力は次のとおりです。
Yes
No
Yes
ご覧のとおり、変更しているのは正規表現の区切り文字だけであり、区切り文字が角かっこである場合に期待するように式が機能していません。
誰かが2番目のものが一致しない理由を説明できますか?
前もって感謝します、
フランシスコ