説明
この関数は、正規表現を使用して文字列を検索し、一致する文字列を返します。これにより、SUBSTR 関数の機能が拡張されます。 この関数は REGEXP_INSTR と似ていますが、サブストリングの位置ではなく、サブストリング自体を返します。マッチする文字列の内容は必要だが、元の文字列内での位置を返す必要はない場合に、この関数が適しています。
構文
REGEXP_SUBSTR(source_char, pattern
[, position [, occurrence [, match_param [, subexpr] ] ] ]
)
パラメータの説明
パラメータ |
説明 |
|---|---|
| source_char | 検索値として使用する文字式を指定します。データ型は CHAR、VARCHAR2、NCHAR、NVARCHAR2、または CLOB が可能です。 |
| pattern | 正規表現の抽出ルールを指定します。通常はテキストリテラルで、文字型は CHAR、VARCHAR2、NCHAR、または NVARCHAR2 が可能です。 |
| position | 正規表現のマッチング開始位置を指定します。値は正の整数で、オプションです。デフォルト値は 1 で、source_char の最初の文字から検索を開始することを意味します。 |
| occurrence | source_char 内の正規表現のマッチ位置を指定します。オプションです。デフォルト値は 1 です。occurrence が 1 より大きい場合、2 番目の正規表現のマッチは、最初のマッチ後の最初の文字から検索を開始し、以降も同様に処理されます。 |
| match_param | 正規表現のデフォルトのマッチング方法を変更するために指定します。オプションです。データ型は VARCHAR2 または CHAR の文字式です。
|
| subexpr | pattern が返すサブ式を指定します。0 から 9 の範囲の非負整数で、オプションです。デフォルト値は 0 で、最初のサブ式を返すことを意味します。 |
戻り値の型
パラメータ source_char と同じ VARCHAR2 または CLOB データ型を返します。
例
abc,def,ghiをabc、def、ghiに分割します。obclient> SELECT REGEXP_SUBSTR('abc,def,ghi', '[^,]+',1,1) AS "最初の", REGEXP_SUBSTR('abc,def,ghi', '[^,]+',1,2) AS "2番目の", REGEXP_SUBSTR('abc,def,ghi', '[^,]+',1,3) AS "3番目の" FROM DUAL; +-----------+-----------+-----------+ | 最初の | 2番目の | 3番目の | +-----------+-----------+-----------+ | abc | def | ghi | +-----------+-----------+-----------+ 1 row in set式
abc(d(e(f)gh)i)の3番目のサブ式を返します。obclient> SELECT REGEXP_SUBSTR('abcdefghi', 'abc(d(e(f)gh)i)',1,1,'i',2) FROM DUAL; +--------------------------------------------------------+ | REGEXP_SUBSTR('ABCDEFGHI','ABC(D(E(F)GH)I)',1,1,'I',2) | +--------------------------------------------------------+ | efgh | +--------------------------------------------------------+ 1 row in set文字列
<div><p>Hello</p><p>World</p></div>から最初の<p>タグとその内容を抽出します。obclient [SYS]> SELECT REGEXP_SUBSTR('<div><p>Hello</p><p>World</p></div>', '<p>.*?</p>') FROM DUAL; +-------------------------------------------------------------------+ | REGEXP_SUBSTR('<DIV><P>HELLO</P><P>WORLD</P></DIV>','<P>.*?</P>') | +-------------------------------------------------------------------+ | <p>Hello</p> | +-------------------------------------------------------------------+ 1 row in set