# 翻訳者のための正規表現~基本その1
それでは、改めて基本からはじめることにします。
第1回でまとめたように、"正規"表現というのは、
パターンを指定して、それに一致するものをすべて検索する
ことでした。
したがって、正規表現を使えるようになるというのは、このいろいろなパターンの指定方法を覚えるということになります。その基本を、何回かに分けて説明します。
なお、前回書いたように、このシリーズの正規表現は秀丸エディタで使えます。秀丸エディタ、あるいはエディタ全般を使ったことがない人は、いい機会ですからダウンロードして使ってみてください。
リンク: 秀まるおのホームページ(サイトー企画)-秀丸エディタ
シェアウェアですが、機能制限も期限もなしに試用できます(起動時にダイアログが表示される)。
それでは、基本ルールです。
任意の1文字
ピリオド(.)
機能:どんな1文字にも一致
伏せ字に使う×みたいなもんですね。複数並べれば、その文字数にマッチします。
※以下、例は背景色を変えていますが、ピリオドはゴミみたいで見落としそうなので、よーく見てくださいね。
例:
1.2
真ん中にどんな1文字があってもマッチします。102、112、1a2、1俺2 など
..省
「○○省」にマッチします。厚労省、文科省など。ただし、「数を省く」などにもマッチすることに注意。
例でもわかるように、マッチする文字のバイト数は関係ありません。でも、たぶんこれだけじゃ、あまり使い途はないですね。
0回以上の繰り返し
アスタリスク(*)
機能:直前のパターンを0回以上繰り返す
例:
レ*
「レレレのレ~」の中の「レレレ」と「レ」にヒットします。「ドレミ」の中の「レ」にもマッチします。
レレ*
「レ」を2つ書いてから * を指定するとどうなるでしょうか。「レレレ」にヒットするのはわかりますが、1文字の「レ」にもマッチしませんか?
実はこれが「0回以上」の秘密です。レ* という指定の意味は「レが0回以上」です。「レ」が0回でいいんなら、どんな文字にでもマッチしそうですが、さすがにそういう仕様にはなっていません。したがって レ* という指定は実質的には「1回以上」です。
ところが レレ* と書くと0回以上が意味を持ってきます。つまり1つ目の「レ」でまず1文字は「レ」がなきゃいけない。ところが2つ目は0回でもいいわけですから、1個で終わっても2個以上終わってもいい。つまり、これも実質的には「レが1回以上」になるのですね。
レレレ*
実質的に「レが2回以上」になりますね。よって、「レレレのレ~」の中の「レレレ」にだけマッチします。
このピリオド(.)とアスタリスク(*)を組み合わせれば、「任意の文字を何文字でも」の意味になります。実際、この組み合わせを使う場面はよくあります。
例:
.*
これだけ指定すると、文字どおりすべての文字にマッチします。
To .*:
Toで始まってコロンで終わる箇所をさがすことができます。
1回以上の繰り返し
プラス(+)
機能:直前のパターンを1回以上繰り返す
上記のようにアスタリスクの「0回以上」はちょっと特殊なので、「1個以上ある」ことをはっきりさせたいときにはプラス記号(+)を使います。
例:
レ+
「レレレのレ~」の中の「レレレ」と「レ」と、「ドレミ」の中の「レ」にもマッチします。アスタリスクの場合と変わりません。
レレ+
レレ* の場合と違う結果になります。理由はもうわかりますね。
さて、アスタリスクもプラスも、「文字を繰り返す」ではなく「パターンを繰り返す」と説明されているところに注目してください。つまり、上の例にあげたような文字だけではなく、一定のパターンも指定できるということです。
今回より前にやった [ ] を思い出してください。[0-9]で数字10個を表しました。これを繰り返し記号と組み合わせ、次のようになります。
例:
[0-9]+
何桁でも、数字の連続にマッチします。ただしカンマ区切りがあるとそこで切れてしまいます。
[0-9,]+
こうすれば、カンマ区切りも含んだ数字にマッチします。
[a-zA-Z]+
アルファベットでできた単語にマッチします。
[ァ-ヶー]+・[ァ-ヶー]+
中黒で結ばれたカタカナ用語にマッチします。
0回か1回以上の出現
クエスチョンマーク(?)
機能:直前のパターンを0回または1回繰り返す
アスタリスクとプラスの中間みたいで半端そうですが、たとえばこんな風に使えます。
例:
インター?フェース
こうすると「インタフェース」と「インターフェース」のどちらも検索できます。インター*フェースと指定してもよさそうなのですが、そうすると「インターーフェース」のような誤字もヒットしてしまいます。そういう用途もありそうですが、正しい表記の「インタフェース」か「インターフェース」のいずれかを探したい、ときは ? の出番です。
チェック[ ・]?ボックス
カッコの中は、中黒の前に半角スペースがあることに注意。こうすると、「チェックボックス」も、「チェック・ボックス」も、「チェック ボックス」もマッチします。カタカナ複合語にゆれがあっても、このパターンでぜんぶチェックできることになります。
さて、だいぶ翻訳作業に使えそうになってきたと思いますが、いかがでしょうか。
なお、今回使ったピリオド、アスタリスク、プラスなどを、正規表現ではメタ文字(meta character)と呼んでいます。
【今回のまとめ】
●正規表現で特殊な意味をもつ文字をメタ文字という
●任意の1文字を表すメタ文字はピリオド(.)
●パターンを0回以上繰り返すメタ文字はアスタリスク(*)
●パターンを1回以上繰り返すメタ文字はプラス(+)
●パターンを0回または1回繰り返すメタ文字はクエスチョンマーク(?)
【サンプルテキスト】
秀丸エディタで今回の検索を試してみたい方は、以下の引用部分をコピペしていただくと、試しやすいかも。
レレレのレ~ ドレミの歌2012年
1,980円alphabetical order
インタフェース
インターフェース
インターーフェース
インターフェイス
インタフェイスチェックボックス
チェック・ボックス
チェック ボックス
この記事へのコメントは終了しました。
コメント
御無沙汰しております、choco(オオツ)です。正規表現、いろいろなところで教えていただきつつ、そして「秀丸エディタ ハンドブック」を本棚に備えつつも、翻訳作業への応用があまり自分では思いつかず、ごく一部のパターンしか使いきれていませんでした・・・。なので今回の企画、ありがたく拝見しております。
「チェック[ ・]?ボックス」によるカタカナ複合語チェックなど、明日からでもすぐに役立ちそうです!ありがとうございました。
投稿: choco | 2012/11/11 20:47:48
お久しぶりー。お元気ですか?
この手のって、ハンドブックとか読んでるより、ともかく「自分で実際にやっ」てみないと覚えませんよねー。
投稿: baldhatter | 2012/11/14 17:18:29