Name
regexp_instr — Returns the first position of the occurrence of a regular-expression pattern in a given string.
Synopsis
integer
regexp_instr
(
|
in source_string varchar , |
| in pattern varchar , | |
| in start_position integer , | |
| in occurrence integer , | |
| in return_option integer , | |
in
match_parameter
integer
); |
Description
This function looks for a pattern and returns the first position of the
pattern. Optionally, you can indicate the
start_position you want to begin the search. The
occurrence parameter defaults to 1 unless you
indicate that you are looking for a subsequent occurrence. The default
value of the return_option is 0, which returns the
starting position of the pattern; a value of 1 returns the starting
position of the next character following the match.
This function returns the starting position of a pattern, so it works much like the familiar INSTR function. The main difference between the two functions is that REGEXP_INSTR lets you specify a pattern instead of a specific search string; thus providing greater versatility.
Parameters
source_string
The string to search.
pattern
The regular expression to match.
start_position
The position to begin the search from.
occurrence
Defaulting to 1, this parameter describes how many occurrences to look for.
return_option
Default is 0, which returns the starting position of the pattern; a value of 1 returns the starting position of the next character following the match.
match_parameter
Match parameter value.
Returns
This function returns a substring matching the regular expression.
Examples
Example 24.336. Examples
This example uses REGEXP_INSTR() to return the
starting position of the five-digit zip-code pattern within the string
Joe Smith, 10045 Berry Lane, San Joseph, CA 91234. If the regular
expression is written as :digit:?{5}, you will get the house number's
starting position instead of the zip code's, because 10045 is the first
occurrence of five consecutive digits. Therefore, you must anchor the
expression to the end of the line, as indicated with the $
metacharacter, and the function will display the starting position of
the zip code regardless of the number of digits for the house number.
SELECT REGEXP_INSTR('Joe Smith, 10045 Berry Lane, San Joseph, CA 91234',
'[[:digit:]]{5}\$')
AS rx_instr;
RX_INSTR
----------
45