この記事は「初めて」正規表現をさわる「非エンジニア」に向けた「超入門」講座になっています!正規表現のスゴさを知ってもらいたく、あえてざっくりとしか説明しません。
- 正規表現がなにかわかる
- 正規表現がちょっっっとかける
- 正規表現をどのように活かせるかがわかる
Contents
正規表現とは
正規表現とは、記号を用いて文字列を正規化しまとめて表せるようにした表現です。端的にいうと、文字列をパターン化して書くことで一斉に検索したり置換したりできるテクニックです。プログラミングや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」 全文字は「.」に置き換え
- 数字1つを表したいときは「
\d
」 - 全文字1つを表したいときは「
.
(ドット)」
とはいったものの、まずは何をどうすればいいのじゃ?
まずは正規表現を作る際のかんたんな前提です!それは少しずつ置き換えをすること!
たとえば、下のようなわざマシン一覧表から「わざマシン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は「(|)」に置き換え
- ORでの検索は「(AAA|BBB)」のように置き換え
たとえば、わざマシンのうち「ほのおのパンチ」「かみなりパンチ」「れいとうパンチ」の3種類だけを検索したいとしましょう。
さきほどと同じように、いったん「ほのおのパンチ」の名称を一度いれてみましょう!
ここまで入力が完了したら、また置き換えを考えていきましょう!
どのわざも「〇〇〇〇パンチ」になっているから〇〇〇〇の部分を置き換えたらうまくいきじゃのう!
そうですね!「ほのおの」「かみなり」「れいとう」がそれぞれ異なっているので、ここを置き換えしてみましょう。いずれかの場合にというOR条件を正規表現で表すには、それぞれの言葉を「|(パイプ)」でつないで最後に「()」で閉じます!「()」も半角です!
※「|(パイプ)」を入力する方法は下記を参考にしてください
半角英数入力にしていただき、以下画像の太枠で囲われたキー + shiftキー を押して入力してください。管理画面内、メールフィルタ設定で複数指定する際に使用します。
[パイプ]はキーボードのどこを打てば入力できますか?
※小文字のエル(l)、大文字のアイ(I)とは異なる記号です。
それでは今回は「(ほのおの|かみなり|れいとう)パンチ
」でいいんじゃな?
はい!またGoogleドキュメントに入れてみましょう!
これを活用すれば「正規表現のスゴさ」で紹介した、ブーピッグの置き換えやサトシの手持ちをまとめて探すのも同様にできますので、試してみてください!
※厳密には「ブー(ビ|ピ)ッ(ク|グ)
」は「ブー[ビピ]ッ[クグ]
」のように記載できます。また「(ピカチュウ|リザードン|ゼニガメ)
」のように「()」で囲う必要はなく「ピカチュウ|リザードン|ゼニガメ
」とかけば問題ないです。ただ、汎用的な書き方を覚えるという観点に沿うために今回は上記のように同一の書き方で紹介しています。
正規表現を日常生活で使える場面
今回紹介するのはとりあえず以上です!
さすがに覚える数が少ないのではないかのう?
たしかに数はかなり厳選していますが、非エンジニアの方がかんたんな検索や置き換えをする程度であればこれだけでも一定役立つと思います!
たとえば個人情報や日付のような情報も正規表現で処理できます!ほかにも使い方次第で行かしどころは無限大です!
対象 | 正規表現例 | 正規表現例(他Ver.) |
---|---|---|
郵便番号 | \d\d\d-\d\d\d\d | \d{3}-\d{4} |
都道府県 | (北海道|青森県|岩手県|秋田県… | …??[都道府県] |
携帯電話番号 | \d\d\d-\d\d\d\d-\d\d\d\d | 0[789]0-\d{4}\d{4} |
日付 | \d\d\d\d年\d\d月\d\d日 | \d{1,4}年\d{1,2}月\d{1,2}日 |
上記のように、よりうまい書き方があるにはあるものの、非エンジニアが普段遣いするぐらいであればそこまで困らないものかと思います!より詳しく知りたい方は、参考サイト等を参照に学習を深めていきましょう!
参考サイト
正規表現系
- 初心者歓迎!手と目で覚える正規表現入門
- この記事を読んだ人が正規表現を次に学習するのにおすすめ
- JavaScriptで正規表現のニガテを克服するための本 Kindle版
- 非エンジニアの初心者が体系的に学ぶのにおすすめ
- Rublar
- シンプルに使える正規表現のチェッカー
- 「正規表現チェッカー」by WWW-Creators!
- 今どきの画面で触れる正規表現のチェッカー