Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2008-03-02

[][][]メールアドレスの隠蔽

ある文書からメールアドレスを隠蔽したい時、ワンライナー

ruby -i.bak -np -e '$_.sub!(/[a-zA-Z0-9_+\-~\/=\.]+@[a-zA-Z0-9_+\-~\/=\.]+/, "anonymous@unknown-host")' *.html

などとしてもいいんだけど、メールアドレス構成文字は[a-zA-Z0-9_+\-~\/=\.]だけじゃないしなあ。いろいろ入れるとバックスラッシュでいっぱいになって醜いしなあ。

それに、ほかの処理もしたい時何行分もワンライナーにするのはつらい。

perl風に書いてみよう。っていうか、Perlで書いてもいいんだが^^

#! /usr/bin/ruby -Ke -i.bak -np

$_.sub!(/[a-zA-Z0-9_\#!$%`'*+\-{|}~^\/=?\.]+@[a-zA-Z0-9_\#!$%`'*+\-{|}~^\/=?\.]+/, "anonymous@unknown-host")
$_.gsub!(/市川せうぞー/, "ほげほげ")

あ、普通にできるものだな(w

やったことがない方法ってのは無意識に避けてるんだろうなあ。


##########コメントに書いてもうまく検索されないようなので、本文に追加します。

上記のままだとちょっと乱暴ですね。ソースコードとかが入ってると壊れてしまうだろうし。

MHonArcが書き出したhtmlを処理したかったので、もうすこしフィットした感じで。

実際にはこんな感じで書きました。

#! /usr/bin/ruby -Ke -i.bak -np

$_.gsub!(/href=”mailto:[^”]+”/, ”href=\”\””)#リンクの無効化
$_.gsub!(/(<em>(To|From|Reply-to)<\/em>: .*<a href=””>)[a-zA-Z0-9_\#!$%`’*+\-{|}~^\/=?\.]+@[a-zA-Z0-9_\#!$%`’*+\-{|}~^\/=?\.]+/) {”#{$1}anonymous at unknown-host”}#ヘッダが付いているもの
$_.gsub!(/<[a-zA-Z0-9_\#!$%`’*+\-{|}~^\/=?\.]+@[a-zA-Z0-9_\#!$%`’*+\-{|}~^\/=?\.]+>/, ’<anonymous at unknown-host>’)#<>に囲まれたもの