kyoneco’s blog

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

正規表現 第二章 置換コマンドへの習熟 読書メモ

続きです。

 

kyoneco.hatenablog.com

 

2.3.4 ささやかなメールユーティリティ

 
やりたいこと
1.メッセージヘッダから必要な情報を抜き出す
2.返信のヘッダを出力する
3.行頭に’|> ’をつけて元のメッセージを出力する
 

<>演算子:通常の変数に代入すると入力の次の行が入る。getline()関数と同じ。<>ですべての入力を読み込むと未定義値を返す。

ex. while ($line = <>) {
}
 

タイトルを抜き出す

$line =~ m/^Subject: (.*)/i
.*は内容がなんであれ行ののこりの部分にマッチする。任意の文字の塊。かならず行末までマッチする。
()内は$1でアクセスできる。
 

アドレスまでの部分にマッチさせたい

^From: (\S+)
\S 空白ではないすべての文字にマッチする
 

括弧内の文字列にマッチさせたい。その際括弧自体もマッチさせたい。

\(([^()]*)\)
括弧はエスケープする必要がある。キャプチャのため、ターゲットの括弧内を括弧にいれる。
 

行頭に’|> ’をつけて元のメッセージを出力したい

while ($line = <>){
print “|> $line”;
}
 
別の方法
$line =~ s/^/|> /;
print $line;
冒頭の無文字を置換している。
 
 

メモ

Perlでのメールユーティリティプログラムの作成を通して、置換コマンドに習熟します。やりたいことを正規表現でどのように実現するかを考えるのがこの節です。具体的な問題を通して使い方を学んでいく構成です。