すべてのプロダクト
Search
ドキュメントセンター

PolarDB:REGEXP_INSTR

最終更新日:Mar 29, 2026

REGEXP_INSTR 関数は、文字列内で POSIX 正規表現パターンを検索し、一致した位置を返します。

構文

INTEGER REGEXP_INSTR
(
  srcstr        TEXT,
  pattern       TEXT,
  position      INT  DEFAULT 1,
  occurrence    INT  DEFAULT 1,
  returnparam   INT  DEFAULT 0,
  modifier      TEXT DEFAULT NULL,
  subexpression INT  DEFAULT 0,
)

パラメーター

必須パラメーター

パラメーター説明
srcstr検索対象の文字列です。
pattern一致させる正規表現パターンです。

任意パラメーター

パラメーターデフォルト値説明
position1srcstr 内の検索開始位置(文字単位)です。
occurrence1パターンが複数回出現する場合に、何番目の一致位置を返すかを指定します。occurrence - 1 回分の一致をスキップします。たとえば、occurrence => 2 を指定すると、最初の一致をスキップし、2 番目の一致の位置を返します。
returnparam0返される位置の基準を制御します。0 の場合、一致した文字列の先頭文字の位置を返します。0 より大きい値を指定した場合、一致した文字列の末尾直後の文字の位置を返します。
modifierNULLパターンマッチングの動作を制御するフラグです。使用可能なすべてのフラグについては、「PostgreSQL ドキュメント」をご参照ください。
subexpression0どのキャプチャグループの位置を取得するかを指定します。非ゼロ値を指定する場合は、pattern 内で検索対象の一部を抽出するために、1 つ以上の括弧のペアを含める必要があります。たとえば、subexpression => 2 を指定すると、2 番目のキャプチャグループの位置を返します。

パターンの最初の出現位置を検索する

'800-555-1212' の中から、連続する 3 桁の数字の最初のグループを検索します。

polardb=# SELECT REGEXP_INSTR('800-555-1212', '[0-9][0-9][0-9]', 1, 1) FROM DUAL;
 regexp_instr
--------------
            1
(1 row)

一致は位置 1800)から始まります。

パターンの 2 番目の出現位置を検索する

最初の一致をスキップして 2 番目の一致を検索するには、2occurrence パラメーターとして指定します。

polardb=# SELECT REGEXP_INSTR('800-555-1212', '[0-9][0-9][0-9]', 1, 2) FROM DUAL;
 regexp_instr
--------------
            5
(1 row)

2 番目の一致(555)は位置 5 から始まります。