2009年10月25日日曜日

ルビだらけのword文から、正規表現でルビを一括削除。

wordでルビだらけの文章からルビを抜く方法を試行錯誤して、やっと実現したのでメモ。。

word文章からテキストエディタにコピペして、正規表現で置換する方法で、

\(([あ-ん]*)\)

という風に正規表現で置換をかけたら出来た。嬉しいっす。

ちなみにwz editorでの実行なので、他のエディタの場合はどうなのかわかりません。
正規表現って、同じなのかな・・。
正規表現っていうぐらいだから。。

■追記1
半角¥マークはウェブ上ではバックスラッシュとして表示されてますね。。
上記のバックスラッシュ\は、¥マークです。念のため。
(追記1の追記。半角の¥マークは、環境によって¥マーク(便宜上全角で表現します)に見えていたりバックスラッシュに見えていたりするので、「上記のバックスラッシュ\は」という表現は不十分な表現でした。日本語環境では、この半角円マークとバックスラッシュの文字コードが一緒、ということで悩まされますね。)

■追記2
さて、上記の自分にとってはかなり意味不明なことの内訳は以下のようなことのようです。

【¥(】  で半角括弧を文字として認識させ(¥マークを便宜上全角で書いてます。本当は半角。)、
【()】で囲んだ部分をひとつの文字として扱わせ(何文字であってもかわらない、という意味で)、
【[あ-ん]】」という表現でひらがな全部の中から一文字を検索させ、
【*】で「あ-ん」の文字検索が無限回繰り返されるという寸法らしいです。

文系である私に、正規表現はなじみがうすいっすが、実は文系にも正規表現が便利だということがわかった次第でした。

現在、PHPをピヨピヨと勉強中ですが、正規表現マスターには道遠し。。

■追記3
【()】半角括弧でくくると、「一つの文字として扱う」ということがわかりにくかったっす。
でもこれがあると、一括でルビを選択できて、大変便利でした。

■追記4(2010,5,19追加)
現在、PHPでPerl互換正規表現を学習中です。

PHPにて、preg_replaceで行うと、
$text="サンプル(さんぷる)文字列を代入。。。";
$result=preg_replace("/\(.*?\)/","",$text);
echo $result;
などでOKでした。
もしくは、
$result=preg_replace("/\([あ-ん]+\)/","",$text);
みたいな。

0 件のコメント: