グローバルナビゲーションへ

本文へ

フッターへ

お役立ち情報Blog



非エンジニアに送る「検索・置換操作が捗る正規表現のすすめ」

文章や文字の検索・置換ツールは、日常のビジネス業務でよく使う機能の1つです。
さまざまなソフトウェアにこの機能が付いています。

検索したい文字を入力して実行するのですが、検索したい文字を入力するところに、しばしば「正規表現で検索する」と表示されている場合があります。
正規表現とは、文字列のパターンを表現する表記法です。正規表現を利用すれば、“文字列のパターン”を記述して、一般の検索・置換機能では実現できない高度な操作を行うことができます。

名称未設定-1

正規表現での検索は、検索したい文字を直接指定する検索する方法と比べて非常に高性能で、使えるようになると普段の業務も格段に捗るようになります。

正規表現は高性能な虫眼鏡

「正規表現」と聞くと名前からして難しく感じますが、実は非常に簡単で便利な道具です。

ある学校の全生徒を性別で分ける場合、男子生徒の名前を一人ずつ呼んで分けることもできますが「男子はこっちに来て」と言って分けると効率が良いはずです。

正規表現は、この「男子はこっちに来て」と似ていて、対象を個別ではなく、「まとまり」として操作することができる道具です。
さらにすごい事に、この男子の中から「髪が長い」「身長が170cm以上」・・・と条件を指定することで、指定した複数の条件に合った生徒だけを見つけ出せることができる、高性能なフィルターのような働きもします。
自分が指定した条件に当てはまる物だけが見える、魔法の虫眼鏡みたいなものです。

実際に使って、正規表現を理解してみよう!

世の中には、正規表現に関する分厚い本がいくつもありますが、エンジニアだったり、特殊な検索をしたりしない限り、読む必要はありません。(ただし、エンジニアはきっちりと読んでおくべきです。)
非エンジニアの人が、業務で役立つ正規表現を学ぶには、実際に触って覚えたほうが分かりやすく効率良く理解できます。

そこで今回、オススメするのが「RegExr」という正規表現をテストできるサイトです。

自分が入力した正規表現が、実際に検索対象の文章中のドコにヒットしているかをリアルタイムで確認できます。
英語のサイトですが、使い方は単純なので英語が苦手な人でも大丈夫です。

実際にRegExrを使って正規表現を書いてみる

正規表現を書く部分は、「Expression」の下にある
/([A-Z])\w+/gと入力されている部分です。

正規表現は、基本的に「/」と「/」の間に書きます。(「/」も含めて正規表現ですが、ここでは説明を簡単にしています。)
初期値では、なにやら難しそうな正規表現が書かれていますが、とりあえず、//gとして正規表現を消します。

01

普通に検索をしてツールの使い方を確認する

正規表現に「Welcome」を指定します。/Welcome/gとなるはずです。
すると、下のエリアに「Welcome」に該当する部分が青くハイライトされて、指定した正規表現が検索の対象になっていることを表している状態になったと思います。

02

上の入力欄に正規表現を入力して、下の欄で入力した正規表現に該当する箇所を確認するのがこのツールの使い方です。

正規表現での検索に慣れるために、いくつかの簡単な正規表現を紹介します。

特定の文字を検索する

/[a]/gと指定すると、文字「a」が検索されます。
/[ab]/gと指定すると、文字「a」「b」が検索されます。

03

[]の中で指定した文字は、「or」になっています。
そこで、/[abcdefghijklmnopqrstuvwxyz]/gと小文字のアルファベットを指定すると、すべての小文字のアルファベットの文字が検索されます。

また、[abcdefghijklmnopqrstuvwxyz]は、毎回書くのが面倒なので[a-z]としてまとめて設定できます。
[A-Z]は、全ての大文字のアルファベット、[0-9]は、全ての数字を設定できます。

文字の数を指定して検索する

1つの文字を検索できるようになりましたが、複数の文字からなる文字列はまだ検索できません。
そこで、文字の数を指定する方法を紹介します。

/[m]{2}/gと指定すると、文字「m」が2つ連続している場所が対象になります。
また、{} の中に数字を指定することで、いくつ連続しているかを指定することが出来ます。

04

{} の他にも、「*」(0個以上の繰り返し)、「+」(1個以上の繰り返し)なども指定できます。
これらの特別な意味を持つ特殊文字を「メタ文字」といいます。

先ほどの正規表現とメタ文字を合わせて、/[a-z]+/gとすると、全ての小文字の文字列を検索することができます。

どの文字にも該当する正規表現

/.+/gとすると、全ての文字列が対象になります。「.」は、どんな文字にも該当するメタ文字です。

05

/.{4}/gとすると、どんな文字でもいいので4つ連続している文字列が検索対象になります。

2つ以上の文字列を同時に検索する

/Welcome|Media/gと指定すると、今度は、「Welcome」と「Media」が対象になったと思います。
メタ文字の「|」を使うことで、「or」での検索ができます。
/Welcome|Media|Roll/gのように、続けて条件を指定することもできます。

06

置換操作における正規表現の活用例

実際に正規表現が使えるテキストエディタでの実践例をご紹介します。(使用したエディタ:Sakura Editor)

例えば、文章の中で「お問合わせ」「お問い合せ」「お問合せ」という表記の揺れがあったとします。これを一発で「お問い合わせ」に置換してみたいと思います。

07

08

  1. エディタのメニューから置換機能(検索 > 置換)を選択し、正規表現にチェックを入れます。
  2. 置換前の箇所に “お問合わせ|お問い合せ|お問合せ” と入力します。
  3. 置換後の箇所に“お問い合わせ” と入力します。

09

  1. 「すべて置換」をクリックして置換完了です。

さいごに 「その他にもいろいろな正規表現があります」

今回は、正規表現に関心を持っていただくために、初歩的な正規表現を紹介しました。
すぐに業務に役立つものではありませんが、ちょっと特殊な検索が必要になった場合は、思い出していただければと思います。

ここで紹介した正規表現以外にも、さまざまな便利な文法があるので、興味を持たれた方は、これを期に正規表現を学習してみてはいかがでしょうか。
きっと、さらなる業務の効率化につながることでしょう。

正規表現を極めたい方への参考書籍

51cRxtwo7IL._SX389_BO1,204,203,200_

詳説 正規表現 第3版

作者: Jeffrey E.F. Friedl,株式会社ロングテール,長尾高弘
出版社/メーカー: オライリージャパン
発売日: 2008/04/26
言語: 日本語

本書は正規表現の概念を詳細に解説し、言語やツールの実例を豊富に示しながら、正規表現への理解を深める解説書です。第3版では、前版のJavaと.NETに加え、新たにPHPの章が追加されました。まさに正規表現の本質を読み解く決定版です。正規表現を使いこなしていると自負している人にこそ読んでほしい1冊です。(Amazonから引用)

 

この記事を書いた人

tkr2f
tkr2f事業開発部 web application engineer
2008年にアーティスへ入社。
システムエンジニアとして、SI案件のシステム開発に携わる。
その後、事業開発部の立ち上げから自社サービスの開発、保守をメインに従事。
ドメイン駆動設計(DDD)を中心にドメインを重視しながら、保守可能なソフトウェア開発を探求している。
この記事のカテゴリ

FOLLOW US

最新の情報をお届けします