電子書籍の厳選無料作品が豊富!

パターンマッチのところでつまずいてしまっています。

例えば、
マッチがマッチをすったらマッチになった
という文面があったとします。(適当です)

$txt = 'マッチがマッチをすったらマッチになった';
if($txt =~ m/$txt/s){$txtb = $';}
print "$txtb";

としたら、
がマッチをすったらマッチになった
と出てくると思います。

これを、
になった
と表示させる為に、最後の「マッチ」にパターンマッチをさせる方法はありませんでしょうか?
ネット上のHPを検索しましたが、どうしても見つけられませんでした。

何とぞ宜しくお願いします。

A 回答 (2件)

正規表現中の $txt は何かのtypoですかね。

$txt ではなく「マッチ」にマッチさせたいのだとして、

if (/.*マッチ/) {$txtb=$'}

とすれば「.*」が最長一致になるので、最後の「マッチ」までマッチします。
    • good
    • 0
この回答へのお礼

なるほど!!

全くその方法に気がつきませんでした。

大変助かりました。有り難うございました
m(__)m

お礼日時:2008/11/19 09:49

あまり試したことがないので、もっとスマートな方法があるかもしれませんが……


gオプションで繰り返し評価したらどうでしょうか?
分かりにくいと思うので、サンプル借りてきました。

http://katamari.jp/weblog/index.php/2007/10/31/p …
    • good
    • 0
この回答へのお礼

お教え頂いて、有り難うございました。

大変助かりました
m(__)m

お礼日時:2008/11/19 09:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!