(perl) ~ s/変換前文字列/変換後文字列/g; 最後の文字列だけ変換するには?

[上に] [前に] [次に]
茶しぶ男 2000/01/13(木) 10:19:00
Perlで、

$hogehoge =~ s/変換前文字列/変換後文字列/g;

だと、全部の文字列を変換し、

$hogehoge =~ s/変換前文字列/変換後文字列/;

だと、最初の文字列だけ変換されますが、

「最後の文字列だけ変換」する方法(「g」の代わりに指定?)はないでしょうか?

また、「g」「指定なし」以外の物の一覧があれば、教えてくださると幸いです。よろしくお願いします。

トライ 2000/01/13(木) 11:27:17
>また、「g」「指定なし」以外の物の一覧があれば、教えてくださると幸いです。

i:大文字と小文字の区別をしないようにできます。
m:文字列に含まれている\n(改行)を無視します(複数行で置換可能です。)
s:文字列を1つの行として認識します。

>「最後の文字列だけ変換」する方法(「g」の代わりに指定?)はないでしょうか?

正規表現に
$:行の末尾を示します。
というのがあったと思います。それと、
.*:何文字かある文字列
を組み合わせて、

$hogehoge =~ s/(^.*)置換前文字列(.*$)/$1置換後文字列$2/;

なんていかがでしょうか。

茶しぶ男 2000/01/13(木) 11:47:53
[[解決]]
> $hogehoge =~ s/(^.*)置換前文字列(.*$)/$1置換後文字列$2/;

これで、うまく行きました。
ありがとうございました。

#言葉の使い方ですが、「変換」ではなくて、「置換」が正解でしたね。さりげない指摘、重ね重ねありがとうございます。

[上に] [前に] [次に]