2010年9月18日土曜日

翻訳者と校正者のための正規表現 (4) - 桁区切り

多分「そんなの知ってるよ」と思う人がいるとは思いますが、今回も基本ですよ。基本の組み合わせです。

さて、翻訳者は数値表記のスタイルを指定されることがあります。「ソースにばらつきがあっても、3 桁ごとにカンマ入れてね。ただ西暦とか ISO 感度 3200 とかの場合はカンマ入れないでね」というものです。ソースにばらつきがある場合でも、ハンドオフ直前に正規表現置換で一括で直せるんだから、それくらいは処理してハンドオフして欲しいものです。

そこは文章肉体労働者の身分ですから、ぐっとこらえましょう (笑)。早速ですが、以下の架空の文章でエラーだけを検出するにはどうすればよいでしょうか。

「この 2010 年に発売されたカメラでは、1 回の充電で 2,200 枚程度撮影できます。フラッシュを使用した場合は、撮影可能枚数が 900 ~ 1100 枚程度になることに注意してください。また、[MENU] 画面で [自動選択 ISO 3200] を選択すると ISO 感度 3200 まで自動で調節されます。」

ここでエラーは「1100 枚」の部分だけです。いきなり正解案を提示してから解説します。

[^O度]\s[0-9]{4,}\s[^年]

そして実際に適用すると次のように、目的の部分だけにヒットします。



解説:

[0-9]{4,} → 数字が 4 個以上連続している。
\s[^年] → 連続した数字の後にスペースがあり、その後ろに「年」が存在しない。
[^O度]\s → 連続した数字の前にスペースがあり、その前に「O (オー)」も「度」も存在しない。

もちろん、これは正規表現の説明のためのものなので汎用性が低いままです。数字の前にスペースが無かったり、括弧と隣接している場合なども無視しています。なので、実際に使用して対象外の表記が引っかかった場合に、正規表現を改変したり、別の正規表現を追加したりして精度を上げていく必要があります。さまざまな表記が可能になると思います。

それではこの辺デロリアン。


0 件のコメント: