# 翻訳者のための正規表現~基本その2
ちょっと時間が空いてしまいました。基本のその2に入ります。
今回は、複数の文字と、文字の範囲を扱う方法を取り上げます。前回までにすでに使っているルールを詳しく説明するだけですが......
指定した文字のいずれか
大カッコ [ ]
機能:大カッコの中に指定したいずれか1文字にヒット
たとえば、[日米仏独西]と指定すれば、「日」、「米」、「仏」、「独」、「西」のいずれかにヒットします。「日米」という2文字があればそれにもヒットしますが、これは「日米」にヒットしたわけではなく、「日」と「米」に連続してヒットしているだけです。
もちろん、大カッコだけの単独ではなく他の文字列と組み合わせて使うことができるので、出番の多いパターンです。翻訳作業に関連して言えば、たとえば動詞や形容詞の活用形すべてを検索するときなどに活躍します。
例:
行な[わいうえおっ]
動詞の送りがなをチェックするパターンです。「行う = ○、行なう = ×」という仕様はよく見かけますが、このルール違反を探すとき、「行なう」だけ検索していたのではまったくの片手落ち。
行なわ - ナイ
行ない - マス
行なっ - テ
行なう - 。
行なう - トキ
行なえ - バ
行なお - ウ
という活用形すべてを検索しなければなりません。
一方、無精して「行な」だけを検索すると、たとえば「銀行など」のような出現箇所もヒットしてしまいます。中学校で習った現代国語文法の知識を思い出しながら、[ ]の中に活用語尾をすべて指定してください。
五段活用、上一段活用、下一段活用、サ行変格活用…… 覚えてますか? 形容詞の活用はどうですか?
五段活用の場合、「わいうえお」や「まみむめも」のほかに、小さい「っ」や「ん」が必要になる場合もありますね。音便、というやつです。
も[たちつてとっ]
動詞「持つ」を漢字で書かなきゃいけないときのチェックパターンです。ただし、「もたらす」のような部分もヒットしてしまいます。このような
過剰検出
は、どうしても避けられない場合があります。仕様ルールチェックなどの場合は、検出から漏れてしまうケースがあるより、過剰に検出されるほうがいい、というのが原則です。
指定した範囲の文字のいずれか
大カッコ [ ]の中でハイフン(-)
機能:大カッコの中で範囲指定したいずれか1文字にヒット
すでに何回か実際に使いました。問題なのは、
範囲は、文字コードが基準
であることです。0-9、a-z、A-Z のように連続していることが明らかな1バイト文字であれば単純ですが、漢字、ひらがな、カタカナは、範囲の最初と最後を知らなければ指定できません。
それを知るには、たとえばこのようなページを参考にします。
リンク: 全角文字一覧
これを見ると、ひらがな、カタカナ、漢字の全範囲は、それぞれ
[ぁ-ん] ※最初は小さい「ぁ」
[ァ-ヶ] ※最初は小さい「ァ」、最後は小さい「ヶ」
[亜-熙]
であることがわかります。カタカナの場合、長音も含まれるので、実用的には
[ァ-ヶー]
となります。このカタカナのパターンでわかるように、[ ]内では、個々に指定する「いずれか1文字」と、ハイフンで指定する「範囲のいずれか」を並べて書くことができます。
また、複数の範囲をそのまま並べることもできるので、
[0-9a-zA-Z]
とすれば、大小の英字と数字をすべて検索できます。区切りは不要です。
ところで、どうでもいいことですが、漢字の範囲の最後の文字「熙」って、「康煕字典」とかでしか見かけない字ですね。
文字の除外
大カッコ [ ]の先頭でカレット(^)
機能:カレット以降の文字をすべて除外
カレット(^)以降に指定するパターンは、上述した個々の指定でも範囲指定でもOK。これも応用範囲の広いパターンです。
[ ]内の途中にカレットを置いても機能しないので注意してください。
サーバ[^ー]
こうすると、最後に長音が付かない「サーバ」がヒットします。「サーバー = ○、サーバ = ×」という仕様のときチェックに使えるパターンです。
ナビゲート[^さしすせ]
「さしすせ」はサ変動詞の活用語尾で、それを除外しています。つまり、「ナビゲートする」、「ナビゲートして」のようなサ変動詞にヒットします。
【今回のまとめ】
●[ ]の中に文字を羅列すると、そのいずれか1文字にヒットする
●[ ]の中では、ハイフン(-)で文字の範囲を指定できる
●ハイフン(-)による文字の範囲は文字コードに従う
●ハイフン(-)で複数の範囲を並べられる
●[ ]の先頭にカレット(^)を置くと、それ以降がすべて除外される
【すぐに使える実用的なパターン】
[0-9a-zA-Z]
……英数字(1バイト)
[0-9a-zA-Z]
……全角の英数字すべて
[、。ァ-ヶーぁ-ん亜-熙]
……(通常使う)和文の文字すべて。
[ヲ-ン]
……半角カタカナすべて
この記事へのコメントは終了しました。
コメント