The REGEXP_SUBSTR function in Oracle PL/SQL is a powerful tool for working with regular expressions to extract substrings from a larger string. This function allows you to search for a pattern within a string and return the matched substring. Here’s an overview of the REGEXP_SUBSTR function:


The basic syntax of the REGEXP_SUBSTR function is as follows:

REGEXP_SUBSTR(source_string, pattern [, start_position [, match_occurrence [, match_return_option [, match_parameter ]]]])

source_string: The input string from which you want to extract a substring.

pattern: The regular expression pattern to search for in the source string.

start_position: (Optional) The position in the source string where the search should begin. The default is 1.

match_occurrence: (Optional) The occurrence of the match to be returned. The default is 1.

match_return_option: (Optional) Specifies what to return. Options include ‘i’ for the position of the first character in the match, ‘c’ for the actual matched substring, or ‘n’ for the nth subgroup in the pattern.

match_parameter: (Optional) A string that contains match parameters.


Example 1: Basic Usage

REGEXP_SUBSTR('Hello, World!', 'W.l') AS result 
FROM dual;

Output: Worl

In this example, the pattern ‘W.l’ looks for the character ‘W’, followed by any character (‘.’), and then followed by ‘l’. The matched substring is ‘Worl’.

Example 2: Using Match Occurrence

REGEXP_SUBSTR('apple,banana,orange', '[^,]+', 1, 2) AS result 
FROM dual;

Output: banana

Here, the pattern [^,]+ looks for one or more characters that are not commas, and the match_occurrence parameter is set to 2, so the second occurrence is returned (‘banana’).

Example 3: Using Match Return Option

REGEXP_SUBSTR('A123B456', '\d+', 1, 1, 'i') AS result 
FROM dual;

Output: 2

In this case, the pattern \d+ looks for one or more digits, and the match_return_option is set to ‘i’, so the position of the first character in the match is returned (which is 2 in this example).


The REGEXP_SUBSTR function in Oracle PL/SQL provides a flexible way to extract substrings based on regular expressions, making it a valuable tool for tasks such as data cleansing, text parsing, and pattern matching within strings. It allows developers to work with complex patterns and retrieve specific portions of text from larger strings efficiently.