regexp_extract_all
ターゲット文字列 (str
) から正規表現パターン (pattern
) に一致し、pos
で指定された正規表現グループインデックスに対応するすべての部分文字列を抽出します。この関数は配列を返します。
正規表現では、グループは括弧 () で囲まれ、左から右に開く括弧を数えて1から番号が付けられます。例えば、([[:lower:]]+)C([[:lower:]]+)
は大文字 C
の左または右側にある小文字を一致させるためのものです。このパターンには2つのグループが含まれています。C
の左側の ([[:lower:]]+)
が最初のグループで、C
の右側の ([[:lower:]]+)
が2番目のグループです。
パターンは str
の一部を完全に一致させる必要があります。一致が見つからない場合は、空の文字列が返されます。
この関数は v3.1.10 からサポートされています。
構文
ARRAY<VARCHAR> regexp_extract_all(VARCHAR str, VARCHAR pattern, BIGINT pos)
パラメータ
-
str
: 一致させる文字列。 -
pattern
: 部分文字列を一致させるために使用される正規表現パターン。 -
pos
:pattern
は複数のグループを含むことがあります。pos
は抽出する正規表現グループを示します。
戻り値
VARCHAR 要素で構成される ARRAY を返します。
例
-- パターンのグループ1に一致するすべての文字を返します。
MySQL > SELECT regexp_extract_all('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 1);
+-------------------------------------------------------------------+
| regexp_extract_all('AbCdE', '([[:lower:]]+)C([[:lower:]]+)', 1) |
+-------------------------------------------------------------------+
| ['b'] |
+-------------------------------------------------------------------+
-- パターンのグループ2に一致するすべての文字を返します。
MySQL > SELECT regexp_extract_all('AbCdExCeF', '([[:lower:]]+)C([[:lower:]]+)', 2);
+---------------------------------------------------------------------+
| regexp_extract_all('AbCdExCeF', '([[:lower:]]+)C([[:lower:]]+)', 2) |
+---------------------------------------------------------------------+
| ['d','e'] |
+---------------------------------------------------------------------+
キーワード
REGEXP_EXTRACT_ALL,REGEXP,EXTRACT