正規表現

[超入門]正規表現とは – ポケモンでわかる非エンジニア向け講座

シャワーズ

この記事は「初めて」正規表現をさわる「非エンジニア」に向けた「超入門」講座になっています!正規表現のスゴさを知ってもらいたく、あえてざっくりとしか説明しません。

この記事を読むと
  • 正規表現がなにかわかる
  • 正規表現がちょっっっとかける
  • 正規表現をどのように活かせるかがわかる

正規表現とは

正規表現とは、記号を用いて文字列を正規化しまとめて表せるようにした表現です。端的にいうと、文字列をパターン化して書くことで一斉に検索したり置換したりできるテクニックです。プログラミングやITツールにて使える機会が多く、パターンの一致/不一致を判定することでほしい抽出結果を得られるのが強みといえます。

正規表現のスゴさ

正規表現では、次のようなことがまとめてできます!

  • まとめて検索
  • まとめて置換

具体的にオーキド博士とシャワーズと一緒にみていきましょう!

まとめて置換

オーキド博士

さて、助手に書いてもらったブーピッグの解説文をチェックするとしようかのう〜

ブービッグ、あやつりポケモン。ブービックはバネブーから進化できる。巻いた尻尾はバネブーとブーピッグに共通。バネブーのころの真珠が1つだったが、ブーピックの黒真珠は額に2つと腹部に1つとなっている。ブービッグの持つ黒真珠は高く売れるのだとか。また、ブーピックは不思議なステップをすることでも有名。このブービッグの不思議なステップは海外で流行しているともしていないとも。本家ブービックはこのステップを使って相手を操っている。
オーキド博士

「ブーピッグ」の表記が「ブービッグ」「ブーピック」「ブービック」と間違えまくっておる…!ふむう、どうしたものか…

シャワーズ

そういう書き間違いをまとめて修正しやすいのが正規表現の強み!

シャワーズ

さっきの文章をGoogleドキュメント(Wordでも可)に貼り付けて、

シャワーズ

「検索と置換」を呼び出して、

シャワーズ

ちょっと特殊な文字「ブー(ビ|ピ)ッ(ク|グ)」を入れて「正規表現を使用する」にチェックを入れれば

シャワーズ

表記が誤っていたのも含めて全部選択できた状態になった!

シャワーズ

あとは正しい「ブーピッグ」に置換すれば完了!

オーキド博士

こりゃすごい!
これでサボっていた図鑑説明の誤植もまとめて置き換えておこう

まとめて検索

オーキド博士

次はサトシから依頼のあったカントーで捕まえたころのポケモンを探してみようかのう

サトシがつかまえたポケモンはピカチュウ、バタフリー、ピジョット、フシギダネ、リザードン、ゼニガメ、キングラー、オコリザル、ベトベトン、ケンタロス、バリヤード、ラプラス、カビゴンだったはずじゃ

オーキド博士

この中から全部探さないといけないのじゃろうか…?このあとにジョウトやホウエンのポケモンも依頼されておるのに困ったものだのう…

シャワーズ

そんなときも正規表現を使いましょう!博士!

シャワーズ

さっきと同じように「検索と文字列」を表示して、

シャワーズ

検索にちょいと工夫した文字「(ピカチュウ|バタフリー|ピジョット|フシギダネ|リザードン|ゼニガメ|キングラー|オコリザル|ベトベトン|ケンタロス|バリヤード|ラプラス|カビゴン)」を入れて「正規表現を使用する」にチェックをすれば、

シャワーズ

あっという間に検索が完了!

オーキド博士

ぬわんと!こんなことまでできるのか〜

正規表現とは

正規表現とは、文字列を検索・置換するときに使える表現です。プログラミングやテキストエディタにて使用されるケースが多いものの、Google ドキュメントやスプレッドシートのような汎用的なツール、Google アナリティクスといった分析ツールなど使える場面が増えています。

シャワーズ

いままで気にしていなかったツールでもよくみると「正規表現」のオプション付きの場合があります!

ちなみに「正規表現」は英語では”Regular Expression”といいます。日本語で「正規」というと正しいというニュアンスにもとれますが、正規表現の文脈では「適切な規則」ぐらいの意味でとるとよいでしょう。つまり正規表現とは一定の規則に則って表現する方法ということです!

↓Google スプレッドシートでは「正規表現を使用した検索」にて使える

また、正規表現を使用する前提の関数もあります。

  • REGEXMATCH:正規表現で検索
  • REGEXEXTRACT:正規表現で抽出
  • REGEXREPLACE:正規表現で置換

↓GA4では「次の正規表現に一致」で使える

↓テキストエディタのSublime Textでは「.*」で使える

↓テキストエディタのAtomで使える

オーキド博士

これだけいろんなツールで使えるならワシも習得しておかねばならんのう〜

正規表現はできることが多い反面、覚えることも多い

正規表現は多機能で非常に多くの表現ができる反面、覚えたり慣れたりするのに一定の時間がかかります。正直、わたしも決してマスターまではしていません。

たとえばこのような覚えることがあります。

  • 複数文字列から任意の言葉を選ぶ [ ]
  • 繰り返し回数を指定する * + ? { }
  • 指定文字列を取得できる ( )
  • 言葉や記号の種類を指定する . \d \D \w \W \s \S \b \n \r \n
  • 開始位置および終了位置を指定できる「先読み」「後読み」
  • 検索のオプションを指定する /i /o /x /m /g
オーキド博士

初心者のワシにはこんなにやるのは無理じゃ…

とならないようにこの記事では「初めて」正規表現をさわる「非エンジニア」に向けた「超入門」と題して、ほんとに最小限のことだけお伝えします!

シャワーズ

ざっくりと理解したらあとはちょっとずつ使って慣れましょう!難しい使い方はもっと使いこなしたくなったときで十分です!

正規表現の超入門講座

数字は「\d」 全文字は「.」に置き換え

オーキド博士

とはいったものの、まずは何をどうすればいいのじゃ?

シャワーズ

まずは正規表現を作る際のかんたんな前提です!それは少しずつ置き換えをすること!

たとえば、下のようなわざマシン一覧表から「わざマシン001」や「わざマシン229」のように「わざマシン+3桁の数値」を表す正規表現を作りたいとします。

わざマシン001	とっしん
わざマシン002	あまえる
わざマシン003	うそなき
…
わざマシン228	サイコノイズ
わざマシン229	はやてがえし
シャワーズ

このときとりあえず「わざマシン001」のようにそのままの名称を一度いれてしまうこと!「正規表現を使用する」にチェックしていても、これまで普段の検索のようにそのまんまの文字を入れても検索はできます!

シャワーズ

ここまで入力が完了したら、ここから正規表現をどのように使うのか考えていきましょう!ここで大事なのは少しずつ置き換えをしていくこと!

オーキド博士

「わざマシン001」や「わざマシン229」のように「わざマシン+3桁の数値」の形に置き換えたらうまくいきそうじゃが…?

シャワーズ

正規表現では数値1桁を「\d」という記号に置き換えます!たとえば「5」であれば「\d」、「21」であれば「\d\d」のようにかきます!

※キーボードに「\(バックスラッシュ)」がない場合は、下記を参考に入力しましょう

OS入力方法
Mac「Option」+「¥」
Windows「半角入力モード」で「\(ろ)」ボタンを押す。
※日本語のフォントによっては「\」を入力したとしても「¥」で表示される場合があるが、内側のデータとしては大きな問題はない
【正規表現】「バックスラッシュ」を入力する方法
オーキド博士

となると3桁の数値は「\d\d\d」となるのか。では「わざマシン+3桁の数値」は「わざマシン\d\d\d」でいいのだな?

シャワーズ

はい!これを正規表現の欄に入れてみましょう!

シャワーズ

できましたね!もし1桁の数値ではなくて、何かしらの文字に置き換えたい場合は「.(ドット)」を使いましょう!

ORは「(|)」に置き換え

たとえば、わざマシンのうち「ほのおのパンチ」「かみなりパンチ」「れいとうパンチ」の3種類だけを検索したいとしましょう。

シャワーズ

さきほどと同じように、いったん「ほのおのパンチ」の名称を一度いれてみましょう!

シャワーズ

ここまで入力が完了したら、また置き換えを考えていきましょう!

オーキド博士

どのわざも「〇〇〇〇パンチ」になっているから〇〇〇〇の部分を置き換えたらうまくいきじゃのう!

シャワーズ

そうですね!「ほのおの」「かみなり」「れいとう」がそれぞれ異なっているので、ここを置き換えしてみましょう。いずれかの場合にというOR条件を正規表現で表すには、それぞれの言葉を「|(パイプ)」でつないで最後に「()」で閉じます!「()」も半角です!

※「|(パイプ)」を入力する方法は下記を参考にしてください

半角英数入力にしていただき、以下画像の太枠で囲われたキー + shiftキー を押して入力してください。管理画面内、メールフィルタ設定で複数指定する際に使用します。

※小文字のエル(l)、大文字のアイ(I)とは異なる記号です。

paip.png
[パイプ]はキーボードのどこを打てば入力できますか?
オーキド博士

それでは今回は「(ほのおの|かみなり|れいとう)パンチ」でいいんじゃな?

シャワーズ

はい!またGoogleドキュメントに入れてみましょう!

これを活用すれば「正規表現のスゴさ」で紹介した、ブーピッグの置き換えやサトシの手持ちをまとめて探すのも同様にできますので、試してみてください!

※厳密には「ブー(ビ|ピ)ッ(ク|グ)」は「ブー[ビピ]ッ[クグ]」のように記載できます。また「(ピカチュウ|リザードン|ゼニガメ)」のように「()」で囲う必要はなく「ピカチュウ|リザードン|ゼニガメ」とかけば問題ないです。ただ、汎用的な書き方を覚えるという観点に沿うために今回は上記のように同一の書き方で紹介しています。

正規表現を日常生活で使える場面

今回紹介するのはとりあえず以上です!

オーキド博士

さすがに覚える数が少ないのではないかのう?

シャワーズ

たしかに数はかなり厳選していますが、非エンジニアの方がかんたんな検索や置き換えをする程度であればこれだけでも一定役立つと思います!

たとえば個人情報や日付のような情報も正規表現で処理できます!ほかにも使い方次第で行かしどころは無限大です!

対象正規表現例正規表現例(他Ver.)
郵便番号\d\d\d-\d\d\d\d\d{3}-\d{4}
都道府県(北海道|青森県|岩手県|秋田県……??[都道府県]
携帯電話番号\d\d\d-\d\d\d\d-\d\d\d\d0[789]0-\d{4}\d{4}
日付\d\d\d\d年\d\d月\d\d日\d{1,4}年\d{1,2}月\d{1,2}日

上記のように、よりうまい書き方があるにはあるものの、非エンジニアが普段遣いするぐらいであればそこまで困らないものかと思います!より詳しく知りたい方は、参考サイト等を参照に学習を深めていきましょう!

参考サイト

正規表現系

ポケモン系