正規表現

2016.05.10

正規表現とは

コンピューターで任意の文字列を形式的に表す方法。テキストデータ中の任意の文字列を検索・抽出・置換するとき、かな文字・漢字・数字のほか、メタキャラクターという特殊な記号を用いて、さまざまな文字列を表現できる。

もっと詳しく!

正規表現はテキストデータを対象に、ある文字列をそのパターンで表現・特定する方法である。理解が進めば、エディタでの置換処理やPerl等のプログラミングもできるようになるけれども、「いまさら聞けない電子出版のABC」の範疇としては、【エディタでのパターン検索】に絞って解説する。

正規表現を使用する場合、ひらがなとカタカナ、大文字と小文字、全角と半角は区別されるので注意すること。

 

特殊文字

以下の文字は特殊文字またはメタ文字と呼び、正規表現で文字パターンを表現するために使用される。

. * + ? ^ $ [ ] | ( )

これらを、特殊文字としてではなく、文字そのものとして表現したいときにはその文字の前に「¥」を付けます。「¥」そのものを表現したい時には「¥¥」とする。

¥. ¥* ¥+ ¥? ¥^ ¥$ ¥[ ¥] ¥| ¥( ¥) ¥¥

 

文字列の表現

・「.」は任意の1文字を表す。

  辞.
    =辞書、辞典、辞職、辞退、...
  ..辞書
     =電子辞書、国語辞書、英和辞書、和英辞書、...
  .和.典
     =英和辞典、漢和字典

・「*」「+」「?」は直前の文字の繰り返しを表す。
「*」は0個以上の繰り返し。「+」は1個以上の繰り返し。「?」は0個か1個かどちらか

  10*
    =1、10、100、1000、10000、...
  10+
    =10、100、1000、10000、...
  10?
    =1、10
  英*和辞典
    =和辞典、英和辞典、英英和辞典、...
  英+和辞典
    =英和辞典、英英和辞典、...
  英?和辞典
    =和辞典、英和辞典
  ebookpa?edia
    =ebookpedia、ebookpaedia

“0個以上の繰り返し”というところで躓く人が多いようだ。先述の「.」(任意の1文字)と組み合わせて、“任意の文字列”を表現する、とした方がわかりやすい。まずは「.*」でいろいろ試してみて、慣れてきたら適宜「.+」「.?」と限定的に使ってみるのがいい。

  日本.*協会
    =日本協会、日本出版協会、日本電子出版協会、...

 

文字群の表現

「[ ]」はこの記号で囲まれた文字のどれかを表す。「.」よりも確実に文字の範囲を狭めることができる。

  [英独仏]和辞典
    =英和辞典、独和辞典、仏和辞典

「[ ]」内の先頭に「^」を指定すると指定文字列以外と否定条件に変わる。

  [^英独仏]和辞典
    =伊和辞典、西和辞典、露和辞典、...
    ※英和辞典、独和辞典、仏和辞典にヒットしない

「[ ]」の中では、「-」を使って文字コード上での範囲を示すことができる。

  本体価[0123456789]円
    =本体価0円、本体価1円、本体価2円、...
  本体価[0-9]円
    =本体価0円、本体価1円、本体価2円、...
  本体価[0-9]+円
    =本体価10円、本体価123円、本体価2000円、...
  本体価[0-9,]+円
    =本体価10円、本体価123円、本体価2,000円、...

「|」はこの記号で区切られた文字列のどれかを表す。

  JEPA|日本電子出版協会
    =JEPA、日本電子出版協会
  辞書|辞典|事典|字典
    =辞書、辞典、事典、字典

「[ ]」では範囲内の1文字のどれかだが、「( )」と「|」を組み合わせると範囲内の文字列のどれかを指定することがきる。

  いまさら聞けない(電子出版|電子書籍)のABC
    =いまさら聞けない電子出版のABC、いまさら聞けない電子書籍のABC

 

どのように使うか

上記のほか、行頭=「^」、行末=「$」、改行=「¥n」、空白=「¥s」などのメタ文字、エスケープシーケンスを組み合わせると、驚くほど多彩に便利に、テキスト内の文字列パターンを検索できます。原稿テキストのチェックに使える事例をいくつかピックアップしてみるので参考にしてほしい。
※以下の事例「_」は半角スペースを、「_」は全角スペースを表す。

  ¥s<¥/
    閉じタグの前に余分なスペースはないかチェック
  ¥s[」』)〕】》〉]、。]
    括弧閉じや句読点の前に余分なスペースはないかチェック
  <key type="かな">.*[^ぁ-んァ-ヶー].*<¥/key>
    かなキーワード内にひらがな/カタカナ以外の文字が残っていないかチェック
  [ァ-ヶー・][へべぺり] [ァ-ヶー・]
    カタカナ文字列内にひらがなの「へ」「べ」「ぺ」「り」が混入していないかチェック
  [^¥t_-~_-я亜-熙¥n]
    IS第1・2水準のファイルで、半角カタカナ・機種依存文字などをチェック

正規表現でのパターンサーチを使いこなせるようになったら、面白くて止まらなくなるはず。入門書・初心者向け解説サイトも多いので、エディタ上での正規表現を利用した置換処理やPerl等のスクリプト変換に挑戦してみるものいいだろう。

ただし、編集者としてはあまり複雑な処理には手を出さない方が無難。実際の処理は社内のテキスト処理専門スタッフやテキスト加工会社に任せて、原稿の特性からどのような要確認・要調整ワードがあるかに目を配り、処理後のデータに想定外パターンの変換結果がないかチェックすることに注力するのが編集者としての優先事項である。

【参考文献】
長谷川秀記、2012、『デジタルテキスト編集必携[技法編]』 翔泳社
宮前竜也、2015、『[改訂新版]正規表現ポケットリファレンス』技術評論社

[永田 健児/株式会社ディジタルアシスト/20160505]