こんにちは。テックブログ編集者の萱場です。
今回は、弊社でも使用しているグーグルスプレッドシート(以下: スプレッドシート)の正規表現に関して紹介します。
この正規表現ですが、よくわからない記号や文字が並び、とてもとっつきづらいのですが、基本を少し覚えるだけで結構便利な知識なのでぜひ使ってみて下さい。
正規表現とは
英語では、Regular Expressionと表記します。
例えば、[0-9]+と書くと、「0〜9までの数字のいずれかが一文字以上連続する場合に合致する」といったように特定の文字の組み合わせ(パターン)の表現方法です。
この正規表現はREGEX(レゲックス)と表記したりします。
スプレッドシートには、この正規表現を使用した関数もありますが、今回は、もう少し簡単にこの正規表現を使用するテクニックをご紹介します。
それは、検索と置換機能です。
次に検索と置換で正規表現を使う方法を説明します。
検索と置換機能
開き方

上のツールバーの編集→検索と置換で開くことができます。
またショートカット⌘+Shift+Hで開くこともできます。
基本操作

データを編集している都合上、混率表示などで、上記のような文字列を扱うことがあります。
上の例では、検索の入力欄に「コットン」、置換後の文字列の欄に「綿」と入力しています。この状態で下部の「すべて置換」を押すと、、、

上の画像の様に、「コットン」が「綿」に置き換えられました。
これが検索と置換機能です。
上の例では、合計4行しか無いので手入力することも可能ですが、例えば同じような作業を1000行繰り返すとなると、考えただけで嫌になりますよね。
この一括置換機能は本当に便利だなと常々思っています。
それでは、次に正規表現を使った検索と置換を行ってみたいと思います。
正規表現を使った検索と置換
上記のデータの行を少し増やしてみました。

正規表現を使用すると、例えばこのすべての数字の後ろに%と半角スペースを簡単に入れることができます。(解説は少し後ほど)

検索→ ([0-9]+)
置換後の文字列→ $1% (半角スペース)
上の様に入力し、正規表現を使用した検索と大文字と小文字の区別にチェックを入れて、全て置換すると、、、、

すべての数字の後ろに%と半角スペースが入りました。
しかしこのままでは、文字列の最後にも半角スペースが入ったままになっているので、次に下のような処理をします。

検索→ (半角スペース)$
置換後の文字列→(何も入力しない)
これですべて置換ボタンを押すと文末の半角スペースがすべて削除できました。
解説
最初、検索欄に入力した正規表現は、([0-9]+)です。
()は一旦置いといて[0-9]というのは0〜9までの数字を意味します。(\dという書き方もあります。)
+は、直前の文字が1回以上繰り返す場合を表します。
つまり、[0-9]+は、「0〜9の数字が1回以上連続で登場する」部分にマッチします。今回のシートでいうと、100や90などの混率を表す数字にマッチします。
続いて、変換後の文字列の、$1% ですが、この$1というのは、検索時に()で囲んだ部分でマッチした文字列が代入されます。
つまり、([0-9]+)で100がマッチして、その100が$1% の$1の部分に代入されるので、結果として100% となるということです。
次の検索欄の (半角スペース)$というのは、データの文末にある半角スペースと合致します。$の記号は、データの末尾を表します。
つまり文末の半角スペースにマッチします。
エクセルには正規表現を使用した検索と置換機能はない
見出しのとおりですが、エクセルにも検索と置換機能がありますが、正規表現を使用することはできません。
また、少し応用になりますが、肯定先読みや肯定後読みといった文字列の前後の指定によるパターンマッチングも可能です。
これだけでもスプレッドシートを使用するメリットは十分にあると思います。
終わりに
今回は、スプレッドシートの検索と置換機能をつかって簡単な正規表現を用いてみました。
正規表現は、慣れないとわかりにくく理解しづらい部分もあるので、今回のブログで「意外と簡単に使えるんだな」と思ってもらえれば幸いです。
また、正規表現の表現方法の一覧や参考サイトは下記に掲載しておくので、興味がある方は、見てみて下さい。
参考ウェブサイト
https://qiita.com/plumfield56/items/2e126292eefb1bfc1176
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
https://www-creators.com/tool/regex-checker
株式会社デザインXでは、アパレル業界のお客様に向けて、ECサイトや業務基幹システム(ERP)の開発・導入支援を行っております。ご興味をお持ちの方は、是非下記リンクよりお気軽にお問い合わせください。