Use the non-greedy '?'
SQL> create table TestTable(
2 ID VARCHAR2(4 BYTE) NOT NULL,
3 Description VARCHAR2(30 BYTE)
4 )
5 /
Table created.
SQL>
SQL>
SQL> insert into TestTable (ID, Description) values('1','1234 5th Street');
1 row created.
SQL> insert into TestTable (ID, Description) values('2','1 Culloden Street');
1 row created.
SQL> insert into TestTable (ID, Description) values('3','1234 Road');
1 row created.
SQL> insert into TestTable (ID, Description) values('4','33 Thrid Road');
1 row created.
SQL> insert into TestTable (ID, Description) values('5','One than another');
1 row created.
SQL> insert into TestTable (ID, Description) values('6','2003 Movie');
1 row created.
SQL> insert into TestTable (ID, Description) values('7','Start With Letters');
1 row created.
SQL>
SQL> select * from TestTable;
ID DESCRIPTION
---- ------------------------------
1 1234 5th Street
2 1 Culloden Street
3 1234 Road
4 33 Thrid Road
5 One than another
6 2003 Movie
7 Start With Letters
7 rows selected.
SQL>
SQL>
SQL> -- Use the non-greedy '?';
SQL>
SQL> SELECT description,
2 REGEXP_SUBSTR(description,'e.?e')
3 FROM testTable;
DESCRIPTION REGEXP_SUBSTR(DESCRIPTION,'E.?
------------------------------ ------------------------------
1234 5th Street ee
1 Culloden Street ee
1234 Road
33 Thrid Road
One than another
2003 Movie
Start With Letters
7 rows selected.
SQL>
SQL> drop table TestTable;
Table dropped.
SQL>
SQL>
SQL>
Related examples in the same category
1. | '.' matches anything | | |
2. | REGEXP_INSTR(description,'F.') | | |
3. | REGEXP_INSTR(description,'e.e'): Find a letter and then whatever until there was another of the same letter | | |
4. | REGEXP_INSTR(description,'i.i'): 'i' followed by any one character, followed by another 'i' | | |
5. | REGEXP_SUBSTR('Yababa dababa do','a.a') | | |
6. | REGEXP_SUBSTR('abbbb','ab+') | | |
7. | REGEXP_SUBSTR('a','ab+') | | |
8. | REGEXP_SUBSTR('abbbb','ab*') (2) | | |
9. | To see the difference between '*' and '+' | | |
10. | '?': match exactly zero or one repetition | | |
11. | '+': match one or more repetitions | | |
12. | '*' (match zero or more repetitions) | | |
13. | REGEXP_INSTR(description, 'e.+e'): An 'e' followed by any number of other characters and then another 'e' | | |
14. | REGEXP_SUBSTR(description,'e.*e') | | |