Mae向きなブログ

Mae向きな日記のブログ版。ようやくこちらに移行してきました。

横着プログラミング

高林哲さんの横着プログラミングは面白いですね。

第11回: 小粒なツールたち」の中で勉強になったことをまとめておきます。

webpngizeのなかで、以下のような正規表現が登場します。

s/(<img\s.*?src=)(['\"]?)(.*?)\.gif\2/\$1\$2\$3.png\$2/gi

暗号みたいですが、HTMLの中の

<img src="foo.gif" alt="foo">

といったタグを

<img src="foo.png" alt="foo">

に変換してくれるものです。上記の例の場合、
$1には「< img src=>」が、$2には「"」が、$3には「foo」が対応します。\2は後方参照といって、この場合は、2番目の括弧でマッチした「"」が対応します。

<img src='foo.gif' alt="foo">

の場合は、「'」が対応することになります。この辺までは順調に理解できたのですが、html-downcaseでは、以下のような正規表現が登場します。こうなるとなかなか難しいです…。要調査です。

$content =~ s/(<\/?)([A-Z]\w*)((?:\s+[A-Z]\w*(?:\s*=\s*(?:(["']).*?\4|[\w\-.]+))?)*)(\s*>)/$1 . lc($2) . lc_attr($3) . $5/gsixe;

mailrankの中では、以下のような記述があります。

sed -n '1,/^$/p' "$mail"  # へッダ部分だけ抽出

-nオプションは、「sedは日暮れて」によると、「入力行をぜ〜んぶ自動出力するのはやめい!というオプション」という意味で、'1,/^$/p'は、1行目から空行までを出力という意味になります。メールのヘッダ部と本文は空行で区切られているので、これでヘッダ部だけが抽出できるんですね。