This Oracle tutorial explains how to use the Oracle REGEXP_LIKE condition (to perform regular expression matching) with syntax and examples.
* Not to be confused with the LIKE condition which performs simple pattern matching.
The Oracle REGEXP_LIKE condition allows you to perform regular expression matching in the WHERE clause of a SELECT, INSERT, UPDATE, or DELETE statement.
The syntax for the REGEXP_LIKE condition in Oracle/PLSQL is:
REGEXP_LIKE ( expression, pattern [, match_parameter ] )A character expression such as a column or field. It can be a VARCHAR2, CHAR, NVARCHAR2, NCHAR, CLOB or NCLOB data type.
The regular expression matching information. It can be a combination of the following:
| Value | Description |
|---|---|
| ^ | Matches the beginning of a string. If used with a match_parameter of 'm', it matches the start of a line anywhere within expression. |
| $ | Matches the end of a string. If used with a match_parameter of 'm', it matches the end of a line anywhere within expression. |
| * | Matches zero or more occurrences. |
| + | Matches one or more occurrences. |
| ? | Matches zero or one occurrence. |
| . | Matches any character except NULL. |
| | | Used like an "OR" to specify more than one alternative. |
| [ ] | Used to specify a matching list where you are trying to match any one of the characters in the list. |
| [^ ] | Used to specify a nonmatching list where you are trying to match any character except for the ones in the list. |
| ( ) | Used to group expressions as a subexpression. |
| {m} | Matches m times. |
| {m,} | Matches at least m times. |
| {m,n} | Matches at least m times, but no more than n times. |
| \n | n is a number between 1 and 9. Matches the nth subexpression found within ( ) before encountering \n. |
| [..] | Matches one collation element that can be more than one character. |
| [::] | Matches character classes. |
| [==] | Matches equivalence classes. |
| \d | Matches a digit character. |
| \D | Matches a nondigit character. |
| \w | Matches a word character. |
| \W | Matches a nonword character. |
| \s | Matches a whitespace character. |
| \S | matches a non-whitespace character. |
| \A | Matches the beginning of a string or matches at the end of a string before a newline character. |
| \Z | Matches at the end of a string. |
| *? | Matches the preceding pattern zero or more occurrences. |
| +? | Matches the preceding pattern one or more occurrences. |
| ?? | Matches the preceding pattern zero or one occurrence. |
| {n}? | Matches the preceding pattern n times. |
| {n,}? | Matches the preceding pattern at least n times. |
| {n,m}? | Matches the preceding pattern at least n times, but not more than m times. |
Optional. It allows you to modify the matching behavior for the REGEXP_LIKE condition. It can be a combination of the following:
| Value | Description |
|---|---|
| 'c' | Perform case-sensitive matching. |
| 'i' | Perform case-insensitive matching. |
| 'n' | Allows the period character (.) to match the newline character. By default, the period is a wildcard. |
| 'm' | expression is assumed to have multiple lines, where ^ is the start of a line and $ is the end of a line, regardless of the position of those characters in expression. By default, expression is assumed to be a single line. |
| 'x' | Whitespace characters are ignored. By default, whitespace characters are matched like any other character. |
The first Oracle REGEXP_LIKE condition example that we will look at involves using the | pattern.
Let's explain how the | pattern works in the Oracle REGEXP_LIKE condition. For example:
SELECT last_name
FROM contacts
WHERE REGEXP_LIKE (last_name, 'Anders(o|e|a)n');This REGEXP_LIKE example will return all contacts whose last_name is either James, Andersen, or Andersan. The | pattern tells us to look for the letter "o", "e", or "a".
Next, let's use the REGEXP_LIKE condition to match on the beginning of a string. For example:
SELECT last_name
FROM contacts
WHERE REGEXP_LIKE (last_name, '^A(*)');This REGEXP_LIKE example will return all contacts whose last_name starts with 'A'.
Next, let's use the REGEXP_LIKE condition to match on the end of a string. For example:
SELECT last_name
FROM contacts
WHERE REGEXP_LIKE (last_name, '(*)n$');This REGEXP_LIKE example will return all contacts whose last_name ends with 'n'.