Com2 Blog

翻訳とWeb制作を基礎から分かりやすく学ぶ

翻訳の確認にも役立つ正規表現(基礎編)

hidemaru-regexp

文字列をあつかう上で正規表現はとっても便利です。翻訳の確認にもいろいろ応用が利きます。翻訳の確認に役立てるという観点から、正規表現の基礎的な使い方をまとめてみたいと思います。

注意! 検索と置換をご紹介しますが、置換する場合はファイルをコピーしてから行うようにしましょう。ファイルを壊してから困ったと思っても手遅れです。

1. 正規表現とテキストエディタでの検索と置換

正規表現とは

正規表現とは、特定の文字に意味を持たせ、文字列の集合(パターン)に一致させるものです。これにより任意のパターンを検索したり、文字列の置換をすることなどが可能となります。

今回使う正規表現のメタ文字と説明

文字 説明
[] 文字セットを指定します。
^ キャレット/カレットは否定を意味します。ここでは「>でない文字」を表します。
* アスタリスクは直前のパターン0回以上と一致します。つまり「あってもなくても」よいのです。
. ピリオドは改行を除く任意の一文字に一致します。
? クエスチョンは最短一致です。できるだけ短い文字列で一致させたい場合に使います。

テキストエディタでの検索と置換

私は秀丸エディタを愛用しています。この先の話は秀丸エディタをベースに進めますが、テキストエディタが違っても基本的な考え方は同じです。

秀丸では、Ctrl+Fで検索ダイアログ、Ctrl+Rで置換ダイアログを表示できます。

Ctrl+Fの検索ダイアログ
hidemaru-find

Ctrl+Rの置換ダイアログ
hidemaru-replace

「大文字/小文字の区別」はチェックを入れておいた方がよいでしょう。また、「正規表現」にはチェックを入れます。そうしないと、入力した文字そのものを検索してしまいます。検索の場合は「検索文字列を強調」にもチェックを入れておきましょう。検索結果がハイライトされて見やすくなります。

2. HTMLやXMLなど、タグを削除、タグ以外を削除

HTMLやXMLといったマークアップ言語を翻訳するとき、たいていの場合何らかの翻訳支援ツールを使うと思われます。そうすることで、タグの構造を壊してしまうリスクもミニマムにできます。

しかし、ソースファイルで確認する場合もあります。

タグをすべて一括削除

原文と訳文のHTMLファイルがあったとします。文字列だけを比較したい場合、タグが邪魔な存在になります。そんなとき、正規表現でタグをすべて一括で削除してしまうことができます。

置換ダイアログを開き、検索する文字列に次のいずれかを入力します。

<[^>]*>
<.*?>

置換対象は空欄で[全置換]をクリックします。

タグに挟まれた文字列をすべて一括削除

今度はタグに挟まれた文字列をすべて削除、タグだけにしてみましょう。こうすると、原文と訳文のタグ構造が変わっていないか比較しやすくなります。

置換ダイアログを開き、検索する文字列に次のいずれかを入力します。

>[^<]*<
>.*?<

置換対象には

><

を入力して[全置換]をクリックします。

属性値が翻訳対象の場合、すべて一括削除

「a」タグのtitle属性が翻訳対象で訳されることもあります。そんな場合、これも削除しておいた方が構造の比較をしやすいですね。

置換ダイアログを開き、検索する文字列に次のいずれかを入力します。

title="[^"]*"
title=".*?"

置換対象には

title=""

を入力して[全置換]をクリックします。

3. 文字列の検索

翻訳結果に不備がないか確認するときなどに使える文字列の検索をご紹介します。

数字とアルファベットを検索

数字とアルファベットの検索ができると何がよいのでしょうか。

数字は基本的には変更してはいけません。文中では英語の場合開かれたり、日本語の場合漢字表記になることもありますが、仕様の表などは基本的には変更してはいけません。アルファベットは英日翻訳をした場合、訳文中に残る量は少ないと考えられます。

このような要素を確認する際、眼を皿のようにして全文を見るより、検索した方が楽ですし、確実ではないでしょうか。

数字を検索するパターンは次のいずれかです。

[0-9]
\d

(ちなみに「\D」のように大文字のDにすると、数字以外の文字列に一致します。)

アルファベットを検索するパターンは次の通りです。

[a-zA-Z]

よって、数字とアルファベットを一度に検索するパターンは次の通りです。

[0-9a-zA-Z]
[\da-zA-Z]

数字とアルファベット以外、あるいは2バイト文字を検索

日英翻訳をした場合、この検索で翻訳漏れがないか簡単に確認できます。

また、ソースファイルの英語に何らかの理由で2バイトのアルファベットが混入していたとしても、発見し、訳文はきれいに1バイトで統一することもできます。

検索するパターンは次の通りです。

[^\x20-\x7E]

「\x20」は半角スペース、「\x7E」はチルダ「~」です。文字コード表で半角スペースからチルダまでを指定しており、この間には英数字や1バイトの記号が含まれています。それ以外、という指定方法です。

さらにタブや改行コードもマッチさせたくない場合は次のようにします。

[^\x20-\x7E\t\n]

「\t」はタブ、「\n」は改行を表します。

4. TMTOWTDI 方法は一つではない

Perl言語のモットーに次のようなものがあります。

There’s more than one way to do it.

これを略してTMTOWTDIと言うこともあります。「方法はたった一つではない」「もっと別のやり方もある」ということです。

ご紹介したものにもあるように、何かを検索したいときにいくつものアプローチが可能です。そのときどきで最適と考えられるものを見つけることです。これが正規表現の面白いところでもあります。

このことは、Perl言語や正規表現だけでなく、日常生活や社会生活においても言えることです。何をするにもさまざまなやり方があり、その状況に応じて最適なものを選択しようとするものです。

考えれば考えるほど奥深い言葉です。

5. まとめ

以上、簡単なものしかご紹介できていませんが、正規表現がいかに便利かお分かり頂ければ幸いです。まだこれだけでは便利さを実感するには不十分かもしれませんね。

正規表現が分かってくると、その考え方を活用して検査用のExcelマクロを作成したり、より便利なものを作ることができるようになります。もちろんその場合はVBAの知識なども必要になりますが。

機械にまかせられるものは機械にまかせ、訳文の内容などより重要なポイントに注力していきたいものです。


コメント

コメントを残す