Google スプレッドシートで正規表現を使う関数は、取り出す REGEXEXTRACT、置き換える REGEXREPLACE、調べる REGEXMATCH の3つです。 「数字だけ抽出したい」なら =REGEXREPLACE(A1,"[^0-9]","")、「最初の数字のかたまりだけ」なら =REGEXEXTRACT(A1,"[0-9]+") と書きます。

この記事は、シートの数式に絞った一覧です。目的別の数式30本をコピーして貼れる形で載せ、スプレッドシートの正規表現(RE2)で使えない書き方と代わりの数式、数値のセルで止まるときの直し方、キャプチャグループが横に広がる動きまでを整理します。

確認環境(2026-10-05):関数の構文と注意点は、Google ドキュメント エディタ ヘルプの各関数のページの記載に沿っています。表の「結果」は、同じ正規表現を RE2 ライブラリ(Python 3.11.15 の google-re2 1.1.20251105)で実行して得た値です。スプレッドシートが使う正規表現も RE2 です(ヘルプの記載)。

この記事の結論

  • 数字だけ抽出:=REGEXREPLACE(A1,"[^0-9]","")(数字以外をすべて消す)
  • 最初の1件だけ:=REGEXEXTRACT(A1,"[0-9]+")(最初に一致した部分を返す)
  • 含むかどうか:=REGEXMATCH(A1,"[0-9]")(TRUE か FALSE を返す)
  • 数値や日付のセルは TO_TEXT(A1) で包む。 3つの関数はテキストだけを受け取ります。
  • 先読み・後読み・後方参照は使えません。 代わりに、かっこ(キャプチャグループ)で「欲しい部分だけ」を囲みます。

正規表現関数3つの早見表

関数 構文 返すもの 向いている場面
REGEXEXTRACT REGEXEXTRACT(テキスト, 正規表現) 正規表現に一致する最初の部分(テキスト) 文中から1か所を取り出す
REGEXREPLACE REGEXREPLACE(テキスト, 正規表現, 置換) 一致した部分をすべて置き換えたテキスト 不要な文字を消す、別の文字にそろえる
REGEXMATCH REGEXMATCH(テキスト, 正規表現) 一致する部分があるかどうか 条件に合う行に印を付ける、IF や FILTER の条件にする

3つに共通する決まりは次のとおりです(いずれもヘルプの記載)。

決まり 内容
正規表現の種類 RE2。スプレッドシートでは、Unicode 文字クラスのマッチング以外の RE2 が使える
入力と出力 テキストだけを受け取り、テキストを返す
数値を入力にしたいとき TEXT 関数などでテキストに変換してから渡す
結果を数値として使いたいとき VALUE 関数で数値に変換する
REGEXEXTRACT のかっこ キャプチャグループを使うと、複数の結果を返せる

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「スプレッドシート正規表現関数の使い方|REGEXEXTRACT例一覧」

目的別の数式30本(コピーして使える早見表)

A2 セルに元の文字列がある前提の数式です。「□」は全角の空白を表します。

No やりたいこと 数式 A2 の例 結果
1 数字だけを残す(数字だけ抽出) =REGEXREPLACE(A2,"[^0-9]","") 注文No.A-1024(3個) 10243
2 最初の数字のかたまりを取り出す =REGEXEXTRACT(A2,"[0-9]+") 注文No.A-1024(3個) 1024
3 最後の数字のかたまりを取り出す =REGEXEXTRACT(A2,"([0-9]+)[^0-9]*$") 注文No.A-1024(3個) 3
4 小数・マイナスつきの数を数値として取り出す =VALUE(REGEXEXTRACT(A2,"-?[0-9]+(?:\.[0-9]+)?")) 気温 -3.5 度 -3.5
5 桁区切りや単位を外して数値にする =VALUE(REGEXREPLACE(A2,"[^0-9.-]","")) 12,800円(送料込み) 12800
6 数字をすべて削除する =REGEXREPLACE(A2,"[0-9]","") 会議室A-102 会議室A-
7 数字を含むかを調べる =REGEXMATCH(A2,"[0-9]") 備品B棟3階 TRUE
8 数字だけでできているかを調べる =REGEXMATCH(TO_TEXT(A2),"^[0-9]+$") 00123 TRUE
9 英字だけを残す =REGEXREPLACE(A2,"[^A-Za-z]","") 型番 XR-200a(新) XRa
10 英数字以外を削除する =REGEXREPLACE(A2,"[^0-9A-Za-z]","") 型番 XR-200a(新) XR200a
11 先頭の英大文字のコードを取り出す =REGEXEXTRACT(A2,"^[A-Z]+") AB-1024-x AB
12 大文字・小文字を区別せずに含むかを調べる =REGEXMATCH(A2,"(?i)error") Timeout ERROR at step 3 TRUE
13 文中のメールアドレスを取り出す =REGEXEXTRACT(A2,"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}") 連絡先: taro.yamada@example.com まで taro.yamada@example.com
14 メールアドレスの@より前を取り出す =REGEXEXTRACT(A2,"^([^@]+)@") taro.yamada@example.com taro.yamada
15 メールアドレスのドメインを取り出す =REGEXEXTRACT(A2,"@(.+)$") taro.yamada@example.com example.com
16 URLからドメインを取り出す =REGEXEXTRACT(A2,"^https?://([^/?#]+)") https://www.example.com/items/12?ref=top www.example.com
17 メールアドレスの形かを調べる =REGEXMATCH(A2,"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$") taro.yamada@example FALSE
18 文中の郵便番号を取り出す =REGEXEXTRACT(A2,"[0-9]{3}-?[0-9]{4}") 〒100-0001 見本県見本市1-2-3 100-0001
19 郵便番号の形(3桁-4桁)かを調べる =REGEXMATCH(A2,"^[0-9]{3}-[0-9]{4}$") 100-0001 TRUE
20 電話番号のハイフン・かっこ・空白を削除する =REGEXREPLACE(A2,"[-()  ]","") (012) 345-6789 0123456789
21 日付を年・月・日の3列に分ける =REGEXEXTRACT(A2,"([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})") 開催日 2026/10/05 2026 | 10 | 05(3列)
22 半角の丸括弧の中を取り出す =REGEXEXTRACT(A2,"\(([^)]*)\)") プロジェクター(東館3F) 東館3F
23 全角の丸括弧の中を取り出す =REGEXEXTRACT(A2,"(([^)]*))") プロジェクター(東館3F) 東館3F
24 括弧と中身を削除する(半角・全角) =REGEXREPLACE(A2,"[((][^))]*[))]","") プロジェクター(東館3F)(予備) プロジェクター
25 【】の中を取り出す =REGEXEXTRACT(A2,"【([^】]*)】") 【至急】備品の返却について 至急
26 区切り文字より前を取り出す =REGEXEXTRACT(A2,"^[^-]*") A102-東館-3F A102
27 最初の区切り文字より後ろを取り出す =REGEXEXTRACT(A2,"-(.*)$") A102-東館-3F 東館-3F
28 最後の区切り文字より後ろを取り出す =REGEXEXTRACT(A2,"[^-]*$") A102-東館-3F 3F
29 前後の空白を削除する(全角の空白も) =REGEXREPLACE(A2,"^[\s ]+|[\s ]+$","") 「□ 山田 太郎 □」 山田 太郎
30 連続する空白を半角1つにまとめる =REGEXREPLACE(A2,"[\s ]+"," ") 「山田□□太郎 様」 山田 太郎 様

No.21 のようにかっこが2つ以上ある REGEXEXTRACT は、結果が右隣のセルへ広がります(後述)。No.8 は、数字だけのセルが数値として入力されていても調べられるよう、TO_TEXT で包んでいます。

表計算ソフトに貼れる形(タブ区切り)

次のブロックをコピーして、新しいシートの A1 セルに貼り付けると、A列に元の文字列、B列に数式、C列に説明が入ります。数式は同じ行の A列を見る形(A2、A3…)にしてあるので、貼った直後に結果を見比べられます。

元の文字列   数式  やりたいこと
注文No.A-1024(3個) =REGEXREPLACE(A2,"[^0-9]","")   数字だけを残す(数字だけ抽出)
注文No.A-1024(3個) =REGEXEXTRACT(A3,"[0-9]+")  最初の数字のかたまりを取り出す
注文No.A-1024(3個) =REGEXEXTRACT(A4,"([0-9]+)[^0-9]*$")    最後の数字のかたまりを取り出す
気温 -3.5 度   =VALUE(REGEXEXTRACT(A5,"-?[0-9]+(?:\.[0-9]+)?"))    小数・マイナスつきの数を数値として取り出す
12,800円(送料込み)   =VALUE(REGEXREPLACE(A6,"[^0-9.-]",""))  桁区切りや単位を外して数値にする
会議室A-102    =REGEXREPLACE(A7,"[0-9]","")    数字をすべて削除する
備品B棟3階  =REGEXMATCH(A8,"[0-9]") 数字を含むかを調べる
00123   =REGEXMATCH(TO_TEXT(A9),"^[0-9]+$") 数字だけでできているかを調べる
型番 XR-200a(新)   =REGEXREPLACE(A10,"[^A-Za-z]","")   英字だけを残す
型番 XR-200a(新)   =REGEXREPLACE(A11,"[^0-9A-Za-z]","")    英数字以外を削除する
AB-1024-x   =REGEXEXTRACT(A12,"^[A-Z]+")    先頭の英大文字のコードを取り出す
Timeout ERROR at step 3 =REGEXMATCH(A13,"(?i)error")    大文字・小文字を区別せずに含むかを調べる
連絡先: taro.yamada@example.com まで =REGEXEXTRACT(A14,"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}") 文中のメールアドレスを取り出す
taro.yamada@example.com =REGEXEXTRACT(A15,"^([^@]+)@")  メールアドレスの@より前を取り出す
taro.yamada@example.com =REGEXEXTRACT(A16,"@(.+)$") メールアドレスのドメインを取り出す
https://www.example.com/items/12?ref=top    =REGEXEXTRACT(A17,"^https?://([^/?#]+)")    URLからドメインを取り出す
taro.yamada@example =REGEXMATCH(A18,"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$") メールアドレスの形かを調べる
〒100-0001 見本県見本市1-2-3   =REGEXEXTRACT(A19,"[0-9]{3}-?[0-9]{4}") 文中の郵便番号を取り出す
100-0001    =REGEXMATCH(A20,"^[0-9]{3}-[0-9]{4}$")  郵便番号の形(3桁-4桁)かを調べる
(012) 345-6789  =REGEXREPLACE(A21,"[-()  ]","") 電話番号のハイフン・かっこ・空白を削除する
開催日 2026/10/05  =REGEXEXTRACT(A22,"([0-9]{4})[-/]([0-9]{1,2})[-/]([0-9]{1,2})") 日付を年・月・日の3列に分ける
プロジェクター(東館3F)   =REGEXEXTRACT(A23,"\(([^)]*)\)")    半角の丸括弧の中を取り出す
プロジェクター(東館3F)   =REGEXEXTRACT(A24,"(([^)]*))")  全角の丸括弧の中を取り出す
プロジェクター(東館3F)(予備)   =REGEXREPLACE(A25,"[((][^))]*[))]","")  括弧と中身を削除する(半角・全角)
【至急】備品の返却について   =REGEXEXTRACT(A26,"【([^】]*)】")  【】の中を取り出す
A102-東館-3F  =REGEXEXTRACT(A27,"^[^-]*") 区切り文字より前を取り出す
A102-東館-3F  =REGEXEXTRACT(A28,"-(.*)$") 最初の区切り文字より後ろを取り出す
A102-東館-3F  =REGEXEXTRACT(A29,"[^-]*$") 最後の区切り文字より後ろを取り出す
  山田 太郎     =REGEXREPLACE(A30,"^[\s ]+|[\s ]+$","") 前後の空白を削除する(全角の空白も)
山田  太郎   様  =REGEXREPLACE(A31,"[\s ]+"," ") 連続する空白を半角1つにまとめる

数字だけ抽出する数式の使い分け

「数字だけ」には3通りの意味があります。欲しい結果で数式が変わります。

欲しい結果 数式 「注文No.A-1024(3個)」の結果
文字列の中の数字をすべてつなげる =REGEXREPLACE(A2,"[^0-9]","") 10243
最初の数字のかたまり =REGEXEXTRACT(A2,"[0-9]+") 1024
最後の数字のかたまり =REGEXEXTRACT(A2,"([0-9]+)[^0-9]*$") 3

結果はテキストです。合計や比較に使うなら =VALUE(REGEXEXTRACT(A2,"[0-9]+")) のように VALUE で包みます。

全角の数字は [0-9] に含まれない

[0-9] も \d も、半角の数字だけを表します。全角の数字が混ざる列では、文字の集まりに全角を足します。

数式 「全角123と半角45」の結果
=REGEXREPLACE(A2,"[^0-9]","") 45
=REGEXREPLACE(A2,"[^0-90-9]","") 12345

数値や日付のセルは TO_TEXT で包む

3つの関数は「テキストでのみ動作する」とヘルプに書かれています。セルの中身が数値・日付・通貨のときは、先にテキストへ変換します。

変換の関数 構文 特徴(ヘルプの記載)
TO_TEXT TO_TEXT(値) 数値をテキストに変換する。通貨・小数・百分率・日付は、いまの表示形式のまま文字列になる。数値でない値はそのまま返る
TEXT TEXT(数値, 表示形式) 表示形式を自分で指定してテキストにする(例:TEXT(A2,"#.###"))
=REGEXREPLACE(TO_TEXT(A2),"[^0-9]","")
=REGEXMATCH(TO_TEXT(A2),"^[0-9]{4}$")
=REGEXEXTRACT(TEXT(A2,"yyyy-MM"),"^[0-9]{4}")

TO_TEXT は「見えているとおり」の文字列になるので、表示形式によって結果が変わります。

セルの表示 [^0-9] を消した結果 気を付けること
¥1,200 1200 記号と桁区切りが消える
2026/10/05 20261005 年月日がつながる
12.5% 125 小数点も消える。小数点を残すなら [^0-9.] にする

テキストと数値が混ざる列では、最初からすべて TO_TEXT で包んでおくと、行ごとに直す手間がなくなります。TO_TEXT は数値でない値をそのまま返すので、テキストのセルに使っても結果は変わりません。

キャプチャグループの使い方と、横に広がる動き

正規表現の一部をかっこで囲んだものをキャプチャグループと呼びます。REGEXEXTRACT は、かっこの数で返すものが変わります。

正規表現 「内線 12-345 まで」の結果 返るもの
[0-9]+-[0-9]+ 12-345 一致した全体(1セル)
([0-9]+)-[0-9]+ 12 かっこの中だけ(1セル)
([0-9]+)-([0-9]+) 12 | 345 かっこごとに1列(横に2セル)

ヘルプにも、かっこを2つ使った数式が2列のデータを返す例が載っています。かっこが複数ある数式は、結果が入るぶんだけ右側の列を空けて入力します。

「まとめたいだけで、取り出したくはない」かっこは、(?: で始めます。

正規表現 「会場:西館12F」の結果
(東|西)館([0-9]+)F 西 | 12(2列)
(?:東|西)館([0-9]+)F 12(1列)

欲張りな一致に気を付ける

.* はできるだけ長く一致します。括弧が2組ある文字列で差が出ます。

正規表現 「A(1)B(2)」の結果
\((.*)\) 1)B(2
\((.*?)\) 1
\(([^)]*)\) 1

.*?(最短一致)か、[^)]*(閉じ括弧以外の連続)にすると、最初の括弧の中だけを取り出せます。

一致しない行と、列全体への適用

IFERROR で包む

REGEXEXTRACT は一致した部分を返す関数なので、一致する部分が無い行には返す値がありません。IFERROR で包んでおくと、そうした行を空白や決めた文字にそろえられます。IFERROR は、1番目の値がエラーのときに2番目の引数を返し、2番目を省略すると空白を返します(ヘルプの記載)。

=IFERROR(REGEXEXTRACT(A2,"[0-9]{3}-[0-9]{4}"),"")
=IFERROR(VALUE(REGEXEXTRACT(A2,"[0-9]+")),0)
=IF(REGEXMATCH(A2,"@"),REGEXEXTRACT(A2,"@(.+)$"),"メールアドレスなし")

ARRAYFORMULA で列全体に広げる

ARRAYFORMULA は、配列を扱わない関数でも範囲を受け取れるようにする関数です(ヘルプの記載)。先頭のセルに1つ書けば、下の行まで結果が入ります。

=ARRAYFORMULA(IF(A2:A="","",REGEXREPLACE(TO_TEXT(A2:A),"[^0-9]","")))
=ARRAYFORMULA(IFERROR(REGEXEXTRACT(TO_TEXT(A2:A),"[0-9]+"),""))
=ARRAYFORMULA(IF(A2:A="","",REGEXMATCH(TO_TEXT(A2:A),"^[0-9]{3}-[0-9]{4}$")))

空の行に結果を出さないための IF(A2:A="","", … ) と、型をそろえるための TO_TEXT を組にして覚えておくと、どの数式にも当てはめられます。

REGEXMATCH は「一部に一致」で TRUE になる

REGEXMATCH は、文字列のどこかに一致する部分があれば TRUE を返します。全体がその形かを調べたいときは、^(先頭)と $(末尾)で挟みます。

正規表現 「ab1234」 「123」
[0-9]{3} TRUE TRUE
^[0-9]{3}$ FALSE TRUE

大文字と小文字は区別されます。区別せずに調べるなら、先頭に (?i) を付けます。

正規表現 「code: ab12 / AB34」から取り出される部分
[A-Z]+[0-9]+ AB34
(?i)[A-Z]+[0-9]+ ab12

RE2 で使えない書き方と、代わりの数式

スプレッドシートの正規表現は RE2 です。ほかの言語やツールで見かける書き方の一部は使えません。RE2 の公式の構文一覧(google/re2 の Syntax ページ)では、先読み・後読み・後方参照などに「NOT SUPPORTED」と書かれています。

RE2 ライブラリで、それぞれの書き方が通るかを確かめました。

# re2_check.py : RE2(pip install google-re2)で書き方が通るかを確かめる
import re2

patterns = [
    ("先読み", r"[0-9]+(?=円)"),
    ("否定の先読み", r"^(?!.*test)"),
    ("後読み", r"(?<=ID:)[0-9]+"),
    ("否定の後読み", r"(?<!-)[0-9]+"),
    ("後方参照", r"(.)\1"),
    ("強欲な量指定子", r"[0-9]++"),
    ("最短一致", r"\((.*?)\)"),
    ("大文字小文字を区別しない", r"(?i)error"),
    ("名前つきグループ", r"(?P<year>[0-9]{4})"),
    ("単語の境界", r"\bcat\b"),
]
for name, pattern in patterns:
    try:
        re2.compile(pattern)
        print(f"{name:<12} {pattern:<22} 使える")
    except re2.error as exc:
        print(f"{name:<12} {pattern:<22} 使えない: {exc.args[0].decode()}")
先読み          [0-9]+(?=円)            使えない: invalid perl operator: (?=
否定の先読み       ^(?!.*test)            使えない: invalid perl operator: (?!
後読み          (?<=ID:)[0-9]+         使えない: invalid perl operator: (?<=
否定の後読み       (?<!-)[0-9]+           使えない: invalid perl operator: (?<!
後方参照         (.)\1                  使えない: invalid escape sequence: \1
強欲な量指定子      [0-9]++                使えない: bad repetition operator: ++
最短一致         \((.*?)\)              使える
大文字小文字を区別しない (?i)error              使える
名前つきグループ     (?P<year>[0-9]{4})     使える
単語の境界        \bcat\b                使える

(エラーの文は RE2 ライブラリが返したものです。スプレッドシートの画面に出る文言とは異なります。)

使えない書き方は、次のように書き換えられます。

やりたいこと 使えない書き方 代わりの数式 結果の例
「円」の直前の数字 [0-9]+(?=円) =REGEXEXTRACT(A2,"([0-9]+)円") 「合計 1200円(3点)」→ 1200
「ID:」の直後の数字 (?<=ID:)[0-9]+ =REGEXEXTRACT(A2,"ID:([0-9]+)") 「ID:4071 山田」→ 4071
「test」を含まない行 ^(?!.*test) =NOT(REGEXMATCH(A2,"test")) 「sample data」→ TRUE
2つの条件を両方満たす 先読みを2つ並べる =AND(REGEXMATCH(A2,"[0-9]"),REGEXMATCH(A2,"[A-Z]")) 条件ごとに関数を分ける
同じ文字の連続を見つける (.)\1 決まった文字なら "ーー" や "!!" のように並べて書く —

考え方は1つです。「前後の条件」は正規表現の中にそのまま書き、欲しい部分だけをかっこで囲む。 「〜でない」「〜かつ〜」は、NOT や AND など関数の側で組み立てます。

もう1点、ヘルプには「Unicode 文字クラスのマッチング以外の RE2 が使える」とあります。文字の種類は [0-9] [A-Za-z] のように範囲で書くのが確実です。

改行を含むセル

. は改行に一致しません。セル内で改行している文字列をまたいで取り出すときは、先頭に (?s) を付けます。

正規表現 「1行目(改行)2行目」での一致
目.*行 一致なし
(?s)目.*行 「目(改行)2行」に一致

3つの関数と SPLIT・SUBSTITUTE・LEFT/MID の選び方

正規表現が必要ない場面も多くあります。「決まった文字」か「形(パターン)」かで選びます。

条件 選ぶ関数 例
決まった文字を、別の決まった文字に置き換える SUBSTITUTE =SUBSTITUTE(A2,"-","")
位置と文字数が決まっている(先頭3文字、4文字目から2文字) LEFT / MID / RIGHT =LEFT(A2,3)
区切り文字で、すべての部分を列に分けたい SPLIT =SPLIT(A2,"-")
「数字の連続」「3桁-4桁」のように形で指定して取り出す REGEXEXTRACT =REGEXEXTRACT(A2,"[0-9]{3}-[0-9]{4}")
「数字以外」「括弧と中身」のように形で指定して消す REGEXREPLACE =REGEXREPLACE(A2,"[^0-9]","")
形に合うかどうかで行を分ける REGEXMATCH =REGEXMATCH(A2,"^[A-Z]{2}-[0-9]+$")
区切りが何種類もある、位置が行ごとに違う REGEXEXTRACT / REGEXREPLACE =REGEXREPLACE(A2,"[-/・ ]","")

SPLIT は、区切り文字に複数の文字を渡すと、既定ではその1文字ずつを区切りとして扱います(ヘルプの記載。3番目の引数を FALSE にすると、文字列全体を1つの区切りとして扱う)。「区切りは決まっていて、全部の部分が欲しい」なら SPLIT、「一部だけ欲しい」「形で選びたい」なら REGEXEXTRACT、と覚えると選びやすくなります。

「A102-東館-3F」を例に比べます。

欲しいもの いちばん短い書き方
3つとも列に分ける =SPLIT(A2,"-")
先頭の A102 だけ =REGEXEXTRACT(A2,"^[^-]*")
最後の 3F だけ =REGEXEXTRACT(A2,"[^-]*$")
ハイフンを消す =SUBSTITUTE(A2,"-","")
先頭の英字1文字 =LEFT(A2,1)
数字だけ =REGEXREPLACE(A2,"[^0-9]","")

確かめて分かったこと

  • 「数字だけ抽出」は、REGEXREPLACE と REGEXEXTRACT で結果が違いました。 「注文No.A-1024(3個)」は、前者が 10243、後者が 1024 です。数字が2か所以上ある列では、どちらが欲しいかを先に決めます。
  • \d も [0-9] も、全角の数字には一致しませんでした。 「123番」からは何も取り出せず、[0-90-9] にすると取り出せました。
  • かっこを1つ足すだけで、返る内容が「全体」から「かっこの中」に変わりました。 [0-9]+-[0-9]+ は 12-345、([0-9]+)-[0-9]+ は 12 です。まとめるためだけのかっこは (?: で書きます。
  • 先読み・後読みは、RE2 では正規表現として受け付けられませんでした(invalid perl operator)。かっこで囲む書き方に直すと、同じ値(1200、4071)を取り出せました。
  • [^-]*$ は「最後の区切りより後ろ」を返しました(A102-東館-3F → 3F)。末尾の $ があるので、途中の A102 では一致が成立しないためです。
  • TO_TEXT で包むと表示形式ごと文字列になるので、12.5% から数字だけを残すと 125 になります。 小数点が要るときは、消す対象から . を外します。

よくある質問

Q. スプレッドシートで数字だけ抽出するには? A. =REGEXREPLACE(A1,"[^0-9]","") で数字以外をすべて消します。最初の数字のかたまりだけが欲しいときは =REGEXEXTRACT(A1,"[0-9]+") を使います。

Q. REGEXEXTRACT と REGEXREPLACE の違いは? A. REGEXEXTRACT は一致した最初の部分を取り出し、REGEXREPLACE は一致した部分をすべて置き換えます。「残したい形」を書くなら前者、「消したい形」を書くなら後者が短く済みます。

Q. REGEXEXTRACT が数値のセルで使えないときは? A. TO_TEXT(A1) で包んでテキストにしてから渡します。3つの正規表現関数はテキストだけを受け取るためです。

Q. REGEXEXTRACT で複数の値を取り出すには? A. 取り出したい部分をそれぞれかっこで囲みます。かっこの数だけ、右隣のセルへ結果が広がります。

Q. スプレッドシートの正規表現で先読みは使えますか? A. 使えません。スプレッドシートが使う RE2 は先読み・後読み・後方参照に対応していないので、欲しい部分をかっこで囲む書き方に置き換えます。

Q. 特定の文字より前(後ろ)だけを取り出すには? A. 前は =REGEXEXTRACT(A1,"^[^-]*")、後ろは =REGEXEXTRACT(A1,"-(.*)$") です。- の部分を、区切りにしたい文字に置き換えて使います。

まとめ

  • 正規表現関数は取り出す REGEXEXTRACT、置き換える REGEXREPLACE、調べる REGEXMATCHの3つです。
  • 数字だけ抽出は REGEXREPLACE(A1,"[^0-9]","")、最初の1件だけなら REGEXEXTRACT(A1,"[0-9]+") です。
  • 3つともテキストだけを受け取ります。数値や日付のセルは TO_TEXT で包み、結果を計算に使うなら VALUE で包みます。
  • かっこ(キャプチャグループ)で欲しい部分だけを取り出せます。かっこが複数あると横に広がります。
  • スプレッドシートの正規表現は RE2。先読み・後読み・後方参照は使えないので、かっこや NOT・AND で書き換えます。
  • 一致しない行は IFERROR、列全体は ARRAYFORMULA と組み合わせます。
  • 決まった文字なら SUBSTITUTE、決まった位置なら LEFT/MID、全部に分けるなら SPLIT。形で指定するときに正規表現関数を選びます。

参考・出典

  • Google ドキュメント エディタ ヘルプ「REGEXEXTRACT」https://support.google.com/docs/answer/3098244?hl=ja
  • Google ドキュメント エディタ ヘルプ「REGEXREPLACE」https://support.google.com/docs/answer/3098245?hl=ja
  • Google ドキュメント エディタ ヘルプ「REGEXMATCH」https://support.google.com/docs/answer/3098292?hl=ja
  • Google ドキュメント エディタ ヘルプ「TO_TEXT」https://support.google.com/docs/answer/3094285?hl=ja
  • Google ドキュメント エディタ ヘルプ「TEXT」https://support.google.com/docs/answer/3094139?hl=ja
  • Google ドキュメント エディタ ヘルプ「IFERROR」https://support.google.com/docs/answer/3093304?hl=ja
  • Google ドキュメント エディタ ヘルプ「ARRAYFORMULA」https://support.google.com/docs/answer/3093275?hl=ja
  • Google ドキュメント エディタ ヘルプ「SPLIT」https://support.google.com/docs/answer/3094136?hl=ja
  • google/re2「Syntax」https://github.com/google/re2/wiki/Syntax

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「スプレッドシート正規表現関数の使い方|REGEXEXTRACT例一覧」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?