Perl入門 ≫ LESSON16 検索・置換関数

検索・置換関数

正規表現を使って、文字列の検索・置換関数を使うことができます。
検索については、前の項目の「正規表現」でやったので省略します。
ただ、検索パターンにおいては、次のように記述しても同様の結果を得られます。

m/パターン/オプション



置換関数

文字列を別の文字列に置き換えます。

●s/パターン/置換文字列/

s/パターン/置換文字列/オプション

パターンにマッチした部分を指定した文字列に置換します。
検索する時と同様、左辺には対象となる文字列を指定し、=~で繋げます。 左辺を省略すると、特殊変数$_を置換します。
オプションは以下の通り。その他のオプション(i,m,o,s,x)は検索する時のオプションと同様。

オプション
g 出現した全てのパターンを置き換える。
e 置換文字列をPerl式として評価する。

my $v = "abc123def4gh";
#連続した数字を文字列DIGITに変換
$v =~ s/\d+/DIGIT/g;
print "$v";

abcDIGITdefDIGITgh



●tr/検索リスト/置換リスト/

tr/検索リスト/置換リスト/オプション

検索リストに指定された文字をすべて、置換リストの対応する文字に置換し、置換した文字数を返します。
(y/検索リスト/置換リスト/オプション 形式でも同様。)
オプションは以下の通り。

オプション
c 検索対象を、指定した検索リストの補集合にする。
d 検索リストで見つかったものの中から、置換リストに対応する文字がないすべての文字を消去する。
s 同じ文字に置換される連続する文字列を一列に圧縮する。

my $v = "abc123def4gh";
#小文字を大文字に変換する。
$v =~ tr/a-z/A-Z/;
print "$v";

ABC123DEF4GH



●pos

pos スカラー

スカラーの最後の\g検索が終わった位置を返します。 代入すると、\gのマッチする位置に影響を与えます。

my $v = "abc123def4gh";
#マッチした位置を返す。
while ($v =~ /[\d]+/gc) {
    my $k = pos($v);
    print "$k\n";
}

6
11



ページのトップへ戻る