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