Use the non-greedy '?' : Wild Card « Regular Expressions « Oracle PL / SQL






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')