ctrans.org

正規表現

先日、こちらのページでバルブ関連の用語集を見つけた。2000語ほどのデータで、保存しておけば今後の業務に利用できそうである。早速、コピペしてテキストファイルを作成したが、英語と中国語の間が複数のスペースで区切られている上、二重改行になっていたり、コピペ時に混入した余分な情報もあったりして見栄えがよろしくない。

貴重なデータなのできれいに加工しておきたい。そんなときは正規表現の出番である。

まず原文の書式だが、上記のサイトを見れば分かるように、「英語+複数の半角スペース+中国語」で一行が構成され、単語と単語の間は、二重改行で区切られている。今回はこれを「英語+タブ+中国語」で一行が構成され、単語と単語を改行で区切る形に加工する*1

まず、二重改行を削る。これは正規表現を使うまでもなく、置換対象を「\n\n」とし、置換後の文字列を「\n」としてエディタの一括置換を行う。これで余分な空行が取り除かれた。

次に、複数の半角スペースを削ってタブに置き換える。スペースの数が決まっていれば、単純な置換で対処できるが、今回の場合、英語と中国語の間に挿入されたスペース数はバラバラである。こういう場合は、次のような正規表現を使う。

置換対象:( ){2,}
置換後の文字列:\t

置換対象の ( ){2,} は、「半角スペースが2つ以上続く部分」という意味の正規表現である*2。このように指定して一括置換を行うと、複数の半角スペースがひとつのタブにまとめられる。

最後に、混入した不要なテキストを削除する。データとして必要な部分は、すでに「英語+タブ+中国語」のかたちになっているので、このかたちになっていない行を削除してしまえばいい。

置換対象:^[一-龠]+[^\n]+$
置換後の文字列:なし

上の正規表現は、「行頭に漢字があり、その後改行以外の何らかの文字が続く部分」という意味になる。やや乱暴な気もするが、置換後の文字列を空にし、一括置換を実行すれば、不要な文字列を取り除くことができる(例えば「网址」や「信箱」で始まる行など)。

うむ。非常にスッキリした。私はデジタルな潔癖性なのだ。

参考:Regular Expression(Riue ちゃんの正規表現講座)

書籍:詳説 正規表現 第2版

*1:タブ区切りにするのは、エクセルなどに張り付ける際や他のツールから利用する際に便利だからである

*2:半角スペースを囲んでいる括弧は、本来不要だが分かりにくいので加えている

2006-07-15 13:21:16
permalink | Tips

←オンライン辞書の新勢力 | top | Dict.CNと辞洋の検索プラグイン→

Post a Comment

HTMLタグは適用されません。不適切と判断されたコメントはブロックされます。

:

:

: