« # 「日本翻訳ジャーナル」11/12月号 | トップページ | # 辞書検索ツール「かんざし」 »

2012.11.11

# 翻訳者のための正規表現~基本その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回以上」になりますね。よって、「レレレのレ~」の中の「レレレ」にだけマッチします。

Rerere


このピリオド(.)とアスタリスク(*)を組み合わせれば、「任意の文字を何文字でも」の意味になります。実際、この組み合わせを使う場面はよくあります。

例:

.*
これだけ指定すると、文字どおりすべての文字にマッチします。

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

インタフェース
インターフェース
インターーフェース
インターフェイス
インタフェイス

チェックボックス
チェック・ボックス
チェック ボックス

10:30 午前 翻訳者のPCスキル |

はてなブックマークに追加

« # 「日本翻訳ジャーナル」11/12月号 | トップページ | # 辞書検索ツール「かんざし」 »

トラックバック


この記事へのトラックバック一覧です: # 翻訳者のための正規表現~基本その1:

コメント

御無沙汰しております、choco(オオツ)です。正規表現、いろいろなところで教えていただきつつ、そして「秀丸エディタ ハンドブック」を本棚に備えつつも、翻訳作業への応用があまり自分では思いつかず、ごく一部のパターンしか使いきれていませんでした・・・。なので今回の企画、ありがたく拝見しております。

「チェック[ ・]?ボックス」によるカタカナ複合語チェックなど、明日からでもすぐに役立ちそうです!ありがとうございました。

投稿: choco | 2012/11/11 20:47:48

お久しぶりー。お元気ですか?

この手のって、ハンドブックとか読んでるより、ともかく「自分で実際にやっ」てみないと覚えませんよねー。

投稿: baldhatter | 2012/11/14 17:18:29

この記事へのコメントは終了しました。