kyoneco’s blog

教育、数学、統計といったテーマについて考えていきます

正規表現 第二章 正規表現によるテキストの書き換え 読書メモ

前回の続きです

 

kyoneco.hatenablog.com

 

 

2.3 正規表現によるテキストの書き換え


$var =~ s/regex/replacement/
正規表現が$varにマッチしたらマッチした部分を取り除きreplacementの部分をそこにはめる

 

・サンプル:ダイレクトメール


ダイレクトメールを製造したい。メールテンプレートにマーカーがつけて、そこにあとで変数を指定してはめ込み該当するマーカーを正規表現で置換する。
ex. Dear =FIRST=,
$given = “Tom”;
$letter =~ s/=FIRST=/$given /g;

/g: グローバル置換 最初の置換が終了した後もそこからさらにマッチを探して置換する

 

・サンプル:株価表示整形


「小数点3位までの使用でかつ3位が0である場合はそれを表示しない」ということをしたい。
$price =~ s/(\.\d\d[1-9]?)\d*/$1/
残しておきたい情報は括弧で囲って$1にキャプチャしてある。$の括弧の外にもマッチする部分があるが、$1への置換により削除される。

 

・自動編集


「遠隔でファイルの該当する文字列を置換したい」
perl -p -i  -e ’s/sysread/read/g’ file
-p: 指定したファイルのすべての行へ置換する
-i: 変更はすべてファイルに書き戻される
-e: プログラム全体がコマンド業のその後の位置に続いていることを示す

 

メモ


2章の続きですが、検索だけでなく置換も踏み込んだ操作について解説されています。
まずは置換の例として、ダイレクトメールのマーカー部分の置換について学びます。
次に、株価表示の整形として小数点3位までの使用でかつ3位が0である場合はそれを表示しないというケースです。すべて置換という操作できる例示がされています。