Excel の新しい正規表現 (Regex) 関数

未分類

Excelは、Microsoft 365の一部として、多くのユーザーに愛用されています。近年、Excelの機能はどんどん拡張されており、その中でも特に注目されているのが、正規表現(regex)機能の追加です。この機能は、テキストデータを効率的に操作するために非常に有用です。本記事では、正規表現の基本的な概念から、Excelにおける具体的な活用法、そして従来の方法と新しい正規表現機能の比較までを詳しく解説します。

正規表現(regex)とは?

正規表現(Regular Expression、略してregex)は、文字列のパターンマッチングや操作を行うための強力なツールです。例えば、特定のパターンに一致する文字列を検索、抽出、置換することができます。プログラミングやデータ処理の分野で広く使用されていますが、Excelにもこの機能が導入され、データ操作の効率が格段に向上しました。

従来のExcelのテキスト操作方法

Excelは元々、文字列操作のための基本的な関数(例えばLEFT、RIGHT、MID、FIND、REPLACEなど)を提供していました。これらの関数は一定の範囲では有効でしたが、複雑なパターンマッチングや条件付きのテキスト操作には限界がありました。

LEFT, RIGHT, MID関数

  • LEFT関数: 文字列の左端から指定した数の文字を取得します。
  • RIGHT関数: 文字列の右端から指定した数の文字を取得します。
  • MID関数: 文字列の指定位置から指定した数の文字を取得します。

これらの関数は簡単な操作には適していますが、複雑なパターンを扱うのは難しいです。

FIND, SEARCH関数

  • FIND関数: 文字列の中で指定した文字列が最初に現れる位置を返します。大文字と小文字を区別します。
  • SEARCH関数: FIND関数と同様ですが、大文字と小文字を区別しません。

これらの関数は文字列内の特定の部分を見つけるのに便利ですが、正規表現のように柔軟なパターンマッチングはできません。

新しい正規表現関数

Microsoftは、Excelに正規表現関数を追加することで、テキスト操作の柔軟性と効率性を大幅に向上させました。以下は、Excelで新しく導入された正規表現関数のいくつかです。

TEXTSPLIT関数

  • 機能: 指定した区切り文字を基に文字列を分割します。
  • : “a,b,c” という文字列を “,” で分割すると、[“a”, “b”, “c”] というリストが得られます。

TEXTBEFORE, TEXTAFTER関数

  • TEXTBEFORE関数: 指定した区切り文字の前の部分を抽出します。
  • TEXTAFTER関数: 指定した区切り文字の後の部分を抽出します。
  • : “apple:banana:cherry” という文字列で “:” を区切り文字とすると、TEXTBEFOREは “apple”、TEXTAFTERは “banana:cherry” を返します。

TEXTJOIN関数

  • 機能: 複数の文字列を指定した区切り文字で結合します。
  • : [“a”, “b”, “c”] というリストを “,” で結合すると “a,b,c” という文字列が得られます。

REGEXMATCH, REGEXEXTRACT, REGEXREPLACE関数

  • REGEXMATCH関数: 正規表現パターンに一致するかどうかを確認します。
  • REGEXEXTRACT関数: 正規表現パターンに一致する部分を抽出します。
  • REGEXREPLACE関数: 正規表現パターンに一致する部分を置換します。
  • : “abc123” という文字列に対して、正規表現パターン “\d+” を使用すると、REGEXMATCHはTrue、REGEXEXTRACTは “123”、REGEXREPLACEは指定した置換文字列に応じて結果が変わります。

従来の方法と新しい正規表現関数の比較

新しい正規表現関数を使用することで、従来の方法よりもはるかに効率的に複雑なテキスト操作を行うことができます。以下に、いくつかの具体例を示します。

例1: 電話番号の抽出

従来の方法では、複雑な電話番号パターンを抽出するのは困難でした。新しいREGEXEXTRACT関数を使用すれば、一行で簡単に抽出できます。

従来の方法:

複数のFIND、MID、LEFT関数を組み合わせて複雑な式を書く必要がありました。

新しい方法:

=REGEXEXTRACT(A1, "\d{3}-\d{3}-\d{4}") 

この式は、A1セルの内容から「xxx-xxx-xxxx」という形式の電話番号を抽出します。

例2: メールアドレスの検証

メールアドレスが正しい形式かどうかを確認する場合、従来の方法ではIF関数や複数の文字列操作関数を組み合わせる必要がありました。

従来の方法:

複数のFIND関数やIF関数を使用して、メールアドレスの各部分(@の前後など)をチェックする必要がありました。

新しい方法:

=REGEXMATCH(A1, "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$") 

この式は、A1セルの内容が有効なメールアドレス形式かどうかをチェックします。

例3: テキストの置換

特定のパターンに一致する文字列を置換する場合、従来の方法ではSUBSTITUTE関数を使用して手動でパターンを指定する必要がありました。

従来の方法:

複数のSUBSTITUTE関数を使用して、特定のパターンに一致する部分を手動で置換する必要がありました。

新しい方法:

=REGEXREPLACE(A1, "\d{3}-\d{3}-\d{4}", "XXX-XXX-XXXX") 

この式は、A1セルの内容に含まれる「xxx-xxx-xxxx」という形式の電話番号を「XXX-XXX-XXXX」に置換します。

💡参考情報

REGEXTEST 関数

REGEXTEST 関数 - Microsoft サポート

REGEXTEST 関数を使用すると、指定されたテキストの任意の部分が正規表現 (“regex”) と一致するかどうかを確認できます。 一致する場合は TRUE を返し、一致しない場合は FALSE を返します。

構文

REGEXTEST 関数は、テキストの任意の部分がパターンと一致するかどうかを決定します。

REGEXTEST 関数の構文は次のとおりです。

REGEXTEST(text, pattern, [case_sensitivity])

引数説明
text(必須)一致するテキストを含むセルへのテキストまたは参照。
パターン(必須)一致させるテキストのパターンを記述する正規表現 (“regex”)。
case_sensitivity一致で大文字と小文字が区別されるかどうかを判断します。 既定では、一致では大文字と小文字が区別されます。 次のいずれかを入力します。0: 大文字と小文字の区別1: 大文字と小文字を区別しない

注: 正規表現パターンを記述するときに、さまざまな文字と一致する “トークン” と呼ばれるシンボルを使用できます。 参照用の簡単なトークンを次に示します。

  • “[0-9]”: 任意の数字
  • “[a-z]”: a から z の範囲の文字
  • “.”: 任意の文字
  • “a”: “a” 文字
  • “a*”: ゼロ以上の “a”
  • “a+”: 1 つ以上の “a”
  • この関数のすべての正規表現、および REGEXEXTRACT と REGEXREPLACE では、正規表現の PCRE2 ‘flavor’ が使用されます。
  • REGEXEXTRACT は常にテキスト値を返します。 VALUE 関数を使用して、これらの結果を数値に変換できます。

REGEXEXTRACT 関数

REGEXEXTRACT 関数 - Microsoft サポート
この記事では、REGEXEXTRACT 関数を使用して、指定された正規表現に基づいて文字列からテキストを抽出する方法について説明します。

REGEXEXTRACT 関数を使用すると、指定された正規表現に基づいて文字列からテキストを抽出できます。 最初の一致、すべての一致、または最初の一致からグループをキャプチャすることができます。

構文

REGEXEXTRACT 関数は、指定されたテキスト内でパターンに一致する文字列を抽出します。

REGEXEXTRACT 関数の構文は次のとおりです。

REGEXEXTRACT(text, pattern, [return_mode], [case_sensitivity])

引数説明
text(必須)文字列または文字列を抽出するテキストを含むセルへの参照。
パターン(必須)抽出するテキストのパターンを記述する正規表現 (“regex”)。
return_mode抽出する文字列を指定する数値。 既定では、戻りモードは 0 です。 設定できる値は次のとおりです。0: パターンに一致する最初の文字列を返します1: パターンに一致するすべての文字列を配列として返します2: 最初の一致からキャプチャ グループを配列として返す注: 自分の組織と、予定表の共有相手であるユーザーの組織が Office 365 または Exchange を介してフェデレーションされている場合、招待には 2 つのボタンもあります。グループのキャプチャは、かっこ “(…)” で囲まれた正規表現パターンの一部です。 これにより、1 つの一致の個別の部分を個別に返すことができるようになります。
case_sensitivity一致で大文字と小文字が区別されるかどうかを判断します。 既定では、一致では大文字と小文字が区別されます。 次のいずれかを入力します。0: 大文字と小文字の区別1: 大文字と小文字を区別しない

注: 

  • 正規表現パターンを記述するときに、さまざまな文字と一致する “トークン” と呼ばれるシンボルを使用できます。 参照用の簡単なトークンを次に示します。
  • “[0-9]”: 任意の数字
  • “[a-z]”: a から z の範囲の文字
  • “.”: 任意の文字
  • “a”: “a” 文字
  • “a*”: ゼロ以上の “a”
  • “a+”: 1 つ以上の “a”
  • この関数のすべての正規表現、および REGEXTEST と REGEXREPLACE では、正規表現の PCRE2 ‘flavor’ が使用されます。
  • REGEXEXTRACT は常にテキスト値を返します。 VALUE 関数を使用して、これらの結果を数値に変換できます。

REGEXREPLACE 関数

REGEXREPLACE 関数 - Microsoft サポート

REGEXREPLACE 関数を使用すると、指定された正規表現 (“regex”) に基づいて、文字列のテキストを別の文字列に置き換えることができます。

構文

REGEXREPLACE 関数は、指定されたテキスト内の文字列を、パターンに一致する文字列を置換に置き換えます

REGEXEXTRACT 関数の構文は次のとおりです。

REGEXREPLACE(text, pattern, replacement, [occurrence], [case_sensitivity])

引数説明
text(必須)文字列または文字列を置き換えるテキストを含むセルへの参照。
パターン(必須)置き換えるテキストのパターンを記述する正規表現 (“regex”)。
交換(必須)パターンのインスタンスを置き換えるテキスト。
発生置き換えるパターンのインスタンスを指定します。 既定では、occurrence は 0 で、すべてのインスタンスが置き換えられます。 負の数値は、末尾から検索して、そのインスタンスを置き換えます。
case_sensitivity一致で大文字と小文字が区別されるかどうかを判断します。 既定では、一致では大文字と小文字が区別されます。 次のいずれかを入力します。0: 大文字と小文字の区別1: 大文字と小文字を区別しない

注: 正規表現パターンを記述するときに、さまざまな文字と一致する “トークン” と呼ばれるシンボルを使用できます。 参照用の簡単なトークンを次に示します。

  • “[0-9]”: 任意の数字
  • “[a-z]”: a から z の範囲の文字
  • “.”: 任意の文字
  • “a”: “a” 文字
  • “a*”: ゼロ以上の “a”
  • “a+”: 1 つ以上の “a”
  • この関数のすべての正規表現、および REGEXTEST と REGEXEXTRACTでは、正規表現の PCRE2 ‘flavor’ が使用されます。
  • REGEXEXTRACT は常にテキスト値を返します。 VALUE 関数を使用して、これらの結果を数値に変換できます。

結論

新しい正規表現関数は、Excelでのテキスト操作を飛躍的に効率化します。従来の方法では複雑で時間のかかる作業が、正規表現を使用することで簡単に行えるようになりました。特に、大量のデータを扱う場合や複雑なテキスト操作が必要な場合に、この新機能は非常に有用です。Excelユーザーにとって、正規表現の基本を学び、これらの新しい関数を活用することで、データ処理の効率と精度を大幅に向上させることができるでしょう。

コメント

タイトルとURLをコピーしました