説明
この関数は、正規表現を使用して文字列を検索し、一致する文字列を返すことができます。これにより、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 "first", REGEXP_SUBSTR('abc,def,ghi', '[^,]+',1,2) AS "second", REGEXP_SUBSTR('abc,def,ghi', '[^,]+',1,3) AS "third" FROM DUAL; +-----------+-----------+-----------+ | first | second | third | +-----------+-----------+-----------+ | 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