Name

^ (Caret) — Matches the beginning-of-line

Synopsis

Use the caret (^) to anchor an expression to the beginning of the source text, or to the beginning of a line within the source text.

By default, Oracle treats the entire source value as one line, so ^ matches only the very beginning of the source value:

SELECT REGEXP_SUBSTR(
    'one two three','^one ')
FROM dual;

one

If the text you’re looking for isn’t at the beginning of the source string, it won’t be matched. The following query returns NULL:

SELECT REGEXP_SUBSTR(
    'two one three','^one ')
FROM dual;

The caret is valid anywhere within an expression. For example, the following expression matches either 'One' or 'one', but in either case the word matched must come at the beginning of the string:

SELECT REGEXP_SUBSTR(
    'one two three','^One|^one')
FROM dual;

one

You can change Oracle’s default behavior to treat the source text as a set of “lines” delimited by newline characters. You do this using the 'm' match_parameter, as follows:

SELECT REGEXP_SUBSTR(
   'three two one' 
   || CHR(10) || 'one two three',
   '^one',1,1,'m')
FROM dual;

one

Because 'm' is used, the ^ anchors to the beginning of any line in the text, and the pattern '^one' matches the word 'one‘at the very beginning of the second line.

Be careful, though, that you don’t write an impossible expression such as 'one^one', which attempts to anchor the beginning of the string, or the beginning of a line within the string, to the middle of a value matched by the expression. You can ...

Get Oracle Regular Expressions Pocket Reference now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.