正規表現はとても重宝しています

10/11/15

テキスト編集課のGです。

初稿組をするまでの工程を書きます。

 (1)クライアントからいただいたデータはテキスト形式に変換します。
 (2)テキストデータの全角文字、半角文字、スペース等を統一します。
 (3)赤字修正、独自に作成した外字を用いて見出しのタグ等を入れる。
 (4)組版ソフト用の置換をかける。(3)で入れた見出しのタグはすべての組版ソフトで共通なので、それぞれ組版ソフト用のタグに置換します。
 (5)雑誌や書籍で細かいルールがあるのでルールに沿った専用置換をかける。

上記の工程後に組版をします。
 (1)~(5)すべての工程で置換が使われており、主にPerl、テキストエディタで置換をしていますが、置換テーブルを作る際に重宝しているのが正規表現です。
 正規表現とは文章を検索するときのオプションみたいなもので、“メタ文字”という特殊文字を使うことでかなり複雑な検索が可能となり、決まったパターンの文字列を少ない回数で検索や置換が出来るので作業の効率化になります。

 

少し正規表現の例を書いてみます。

1◆あいうえお
2◆アイウエオ
3◆12345

上に書いた文字列のパターンは、「半角数字◆○○○○○(規則性のない任意の文字列)」です。★半角数字●○○○○○★のように前後を★~★で挟み◆を●に置換します。
考え方としては、「行頭の半角数字の後ろは黒菱形でその次は規則性のない任意の文字列(行末まで)」となります。正規表現を使って書いてみます。

検索文字列 ^([0-9])◆(.*)$
置換文字列 ★\1●\2★

今回は^()[].*$のメタ文字を使いました。まるで暗号文ですがそれぞれ意味があるので説明します。
^は行頭、$は行末(改行の直前)になります。
[ ]は括弧内のどれか1文字。今回は[ ]のなかに0-9を入れたので0、1、2、3、4、5、6、7、8、9のうちどれか1文字。
.は改行以外の1文字。
*は直前のパターンが0個以上。今回は直前のパターンが.なので改行以外の文字が0個以上になるので◆の後ろすべての文字。
( )は括弧内のパターンを置換文字列\1、\2(\9まで)を使って呼び出すことが出来る。

 

 正規表現もかれこれ十数年使用しておりますが、始めた頃に作った置換テーブルを見るともっと正規表現を使えばすっきりするのにとか、何でこんな置換を書いたのかと思うことがしばしばあります。置換テーブルを作る際に注意をしなければいけないことは、意図しないパターンにマッチして気付かずに置換をしてしまい、思いもよらぬ結果になることがあるので、必ず1つずつ確認あり置換で試すことを心掛けています。

 正規表現が使える場面は多く、プログラミング言語、テキストエディタ、今ではInDesignでも使えるようになっています。アプリケーションによって少々書き方が違いますが基本は同じなので覚えていても損はないと思います。