この同様の質問を読み、コードを数回試した後、同じ望ましくない出力が得られ続けます。
検索している文字列が「昨日ウィルマを見た」としましょう。正規表現は、各単語の後に「a」とそれに続くオプションの5 文字またはスペースをキャプチャする必要があります。
私が書いたコードは次のとおりです。
$_ = "I saw wilma yesterday";
if (@m = /(\w+)a(.{5,})?/g){
print "found " . @m . " matches\n";
foreach(@m){
print "\t\"$_\"\n";
}
}
ただし、次の出力を取得し続けました。
found 2 matches
"s"
"w wilma yesterday"
次のものを取得することを期待していましたが:
found 3 matches:
"saw wil"
"wilma yest"
"yesterday"
お気づきのように、内部の戻り値@m
が$1
と$2
であることがわかるまで。
さて、/g
フラグがオンになっているので、問題は正規表現に関するものではないと思いますが、どうすれば目的の出力を得ることができますか?