Perlには、文字列内の特定の文字列を簡単に置換する書き方があります。
最初の一回のみ置換する場合。
$変数名 =~ s/置換前の文字列/置換後の文字列/;
変数の中のすべての置換前の文字列を置換後の文字列に置換する場合。
$変数名 =~ s/置換前の文字列/置換後の文字列/g;
サンプルコード
以下のサンプルコードでgフラグなしとありの動作の違いを確認します。
#!/usr/bin/perl
use strict;
use warnings;
# 元の文字列
my $string = "The quick brown fox jumps over the lazy dog. The quick brown fox is quick.";
# 最初にマッチした'quick'を'fast'に置換(gフラグなし)
$string =~ s/quick/fast/;
print "gフラグなしの置換: $string\n";
# 'quick'を'fast'に全て置換(gフラグあり)
$string =~ s/quick/fast/g;
print "gフラグあり全置換: $string\n";
実行結果
gフラグなしの置換: The fast brown fox jumps over the lazy dog. The quick brown fox is quick.
gフラグあり全置換: The fast brown fox jumps over the lazy dog. The fast brown fox is fast.
gフラグなしの場合は、最初のquickのみ置換。
gフラグありの場合は、すべてのquickをfastに置換しています。
まとめ
本記事では、Perlの正規表現の処理のうち、s///演算子を使用した単純な文字列の置換処理について紹介しました。