• ベストアンサー

正規表現について

パターンマッチのところでつまずいてしまっています。 例えば、 マッチがマッチをすったらマッチになった という文面があったとします。(適当です) $txt = 'マッチがマッチをすったらマッチになった'; if($txt =~ m/$txt/s){$txtb = $';} print "$txtb"; としたら、 がマッチをすったらマッチになった と出てくると思います。 これを、 になった と表示させる為に、最後の「マッチ」にパターンマッチをさせる方法はありませんでしょうか? ネット上のHPを検索しましたが、どうしても見つけられませんでした。 何とぞ宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

正規表現中の $txt は何かのtypoですかね。$txt ではなく「マッチ」にマッチさせたいのだとして、 if (/.*マッチ/) {$txtb=$'} とすれば「.*」が最長一致になるので、最後の「マッチ」までマッチします。

ubshink
質問者

お礼

なるほど!! 全くその方法に気がつきませんでした。 大変助かりました。有り難うございました m(__)m

その他の回答 (1)

  • snowize
  • ベストアンサー率27% (68/245)
回答No.2

あまり試したことがないので、もっとスマートな方法があるかもしれませんが…… gオプションで繰り返し評価したらどうでしょうか? 分かりにくいと思うので、サンプル借りてきました。 http://katamari.jp/weblog/index.php/2007/10/31/perl%E3%81%A7%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE-%E5%BE%8C%E6%96%B9%E5%8F%82%E7%85%A7%E3%81%A8%E7%B9%B0%E3%82%8A%E8%BF%94%E3%81%97%E3%83%9E%E3%83%83%E3%83%81/

ubshink
質問者

お礼

お教え頂いて、有り難うございました。 大変助かりました m(__)m

関連するQ&A