【REGEXREPLACE関数 スプレットシート】正規表現で文字列を置換する

Googleスプレッドシートで用いることができる『REGEXREPLACE関数』は、正規表現を用いて文字列を検索し、置換を行ってくれる関数です。

  • 文字列の末尾に『様』をつける。
  • 文字列最初に『★』をつける。
  • 3文字目の後ろに『-』を挿入する。
  • 全ての文字間に『★』をつける。
  • 数字11桁を『000-0000-0000』のような携帯電話番号形式にする。
  • 数字8桁を『1234/05/06』のような日付形式にする。
  • 『鈴木 太郎』のような文字列を、『太郎 鈴木』にする。
  • 『あ い う』のような文字間のスペースの数がまばらな文字列を『あ い う』のように整える。

などなど、『REGEXREPLACE関数』をマスターすると、文字列の取り扱いの幅がかなり広がります。知っておきたい!という方、こちらの記事を最後まで読んでいってくださいませ。

記事を書いた人

こんにちは。当ブログの管理人の『くろん』です。
30代サラリーマン、新規事業推進室に所属。新卒ブラック企業努め時代に身に着けた業務効率化ノウハウをアウトプットしていきます。
読んでくれた方の業務が一秒でも早く終わりますようにの精神で記事書いてます!!

スポンサーリンク
目次

『REGEXREPLACE関数』とは

『REGEXREPLACE関数』は、文字列について、正規表現を用いて置換した箇所を設定し、別の文字列を挿入することで文字列を置換することができる関数です。応用して、文字の順番を入れ替えたりすることができます。

REGEXREPLACE関数の構文

REGEXREPLACE(テキスト, 正規表現, 置換)

項目内容
テキスト変換したい文字列。セルを指定してもよいし、文字列を関数に直接記入しても良い。直接記入の場合は『”』で囲むこと。
正規表現文字列のうち変更したい箇所を指定する正規表現。セルを指定してもよいし、正規表現を直接関数に記入してもよい。直接記入の場合は、『”』で囲むこと。
置換正規表現で指定した箇所を変更したい文字列を指定。

REGEXREPLACE関数を実際に使ってみた

『あ』を『お』に置換する。(具体的な文字列を置換する)

『REGEXREPLACE関数』の正規表現を用いて文字列の変えたい箇所を特定するという良さは全く活かされてない使い方なのですが、『あ』を『お』にするのように、具体的な文字列をこの文字列に置換するといったことも可能です。
『様』を『殿 』に置換するのもお茶の子さいさいです。

文字列末尾に『◯』追加。最初に『◯』追加。何文字目に『◯』追加。(場所を指定して置換する)

『REGEXREPLACE関数』は、文字列のどの部分を置換するといった使い方ができます。
すべての文字を変えるには、『.』(ピリオド)を指定しています。正規表現で『.』(ピリオド)は、全ての種類の1文字という意味となるので、1文字1文字すべてに対して変更したいという指示となります。

また、文字列末尾を指定するのは『$』(ドル)、文字列最初を指定するのは『^』(ハット)です。
それぞれ注意なのが、最後の文字、最初の文字を指定しているわけではないということです。次のセクションで、最初の文字、最後の文字を指定する方法を説明します。

◯文字目の後ろに、文字列を追加することができるのが、『REGEXREPLACE関数』の真骨頂ですね。
正規表現部分で、どこで分割するかを設定します。今回は、前3文字分と後ろで分割します。
前3文字は『…』で表現できます。後ろは『.+』で、『+』は直前の文字列を1文字以上繰り返すという意味をもちます。
この前部分と後ろ部分を『()』でくくることで、変換後の文字列において最初のかっこに含まれる文字列を『$1』、次を『$2』という形で指定することができます。
なので、『$1-$2』と置換後文字列を指定することで、3文字目の後ろに『-』を追加することができるというわけです。

全ての文字間に『★』をつける。

すべての文字あいだに『★』を挿入するには、正規表現の引数は空白のままでOKです。
但し、文字列頭と文字列末にも挿入されてしまうのがちょっと微妙なところです。頭と末を除くには、『MID関数』などで、生成文字列を再度加工する必要があります。(正規表現で一発でできる方法があれば、こっそり教えてください)

逆に、文字列頭と文字列末に挿入したい場合は、ORを意味する『|』で、文字列頭を意味する『^』と、文字列末を意味する『$』で正規表現『^|$』として上げれば、置換することができます。

11桁の数字の羅列を『000-0000-0000』形式に変える。(携帯電話番号表記に)

11桁の数字を、3桁4桁3桁に分断させて、その間に『-』を入れるといった変更内容です。
分断方法は、11個の『.』(ピリオド)を3個、4個、3個のグループで『()』(カッコ)に分けることで、グループ化し、それぞれ$1$2$3で表現できるようにします。
で、置換後の内容を『$1-$2-$3』にすることで、『000-0000-0000』とすることができます。

ちなみに11桁の数字ではないのを指定した場合は、正規表現に当てはまる文字列がないということになり、変更の処理がなされません。

また、もう一つ注意点として、スプレッドシートは通常、数字を入力した際に、『表示形式→数字→自動』となってしまうのですが、この状態だと文字列扱いとならないので、『REGEXREPLACE関数』が『#VALUE!』エラーとなってしまいます。
なので、変更前文字列の部分を、『表示形式→数字→書式なしテキスト』にすることで、そのデータを文字列指定してください。

8桁の数字を日付形式に

8桁の数字を日付形式にしたい場合は、一つ上の携帯電話番号形式にする方法を応用すれば簡単にできますね。
8桁の数字を正規表現を用いて表し、それを4桁、2桁、2桁のグループにする正規表現を作ると、『(….)(..)(..)』ですね。これを、変更内容としては、各グループの間に『/』(スラッシュ)を加えればいいので、変更内容を『$1/$2/$3』とすればOKです。

姓名をひっくり返して『名 姓』にする(順番の入れ替え)

姓名の順番で並んでいる文字列を、名姓の順番に変える方法は、このようになります。
『鈴木 太郎』のように姓名の並び順で、間に『 』(半角スペース)が入っている名前を正規表現で表現すると、『.+ .+』となります。それを、まとめたい要素ごとに『()』(かっこ)でくくることで、あとでその要素を『$1』『$2』として扱うことができます。
なので、正規表現部分を『(.+) (.+)』とすることで、姓を$1として、名を$2として扱えるようになります。
変更内容を、『$2 $1』とすることで、名姓の順番となり、間に『 』(半角スペース)が入る文字列に置換されます。

文字間にある複数の半角スペースを一つの半角スペースに

データ処理していると時々見かける、『 』(半角スペース)を複数使用して、インデントを揃えた形跡があるデータなどで、半角スペースを一つだけにする置換を考えてみます。
ターゲットは、『 』(半角スペース)を複数使っている場合なので、正規表現で表現すると『\s+』ですが、スプレッドシートでは、『 +』でも大丈夫です。
この1個以上の『 』(半角スペース)をターゲットに、これを一つの『 』(半角スペース)に直せばよいので、変更内容のところは、『 』(半角スペース)と記載してあります。(画像にすると、見えなくてごめんなさい)

『REGEXREPLACE関数』まとめ

『REGEXREPLACE関数』は、正規表現を用いて、文字列の置換を行うことができる関数です。
単純にある文字を別の文字に変えるのはもちろんのこと、文字の順番を入れ替えたり、◯文字目の後に文字を追加するといったこともできる関数です。

スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次