简体   繁体   中英

regular expression using oracle REGEXP_INSTR

I want to use REGEXP_INSTR function in a query to search for any match for user input but I don't know how to write the regular expression that for example will match any value that includes the word car followed by unspecified numbers of letters/numbers/spaces and then the word Paterson. can any one please help me with writing this regEx?

Ok, so let's break this down.

"any value that includes the word car"

I surmise from this that the word car doesn't need to be at the start of the string, therefore i would start the format string with...

'^.*'

Here the '^' character means the start of the string, the '.' means any character and '*' means 0 or more of the preceding character. So zero or more of any character after the start of the string.

Then the word 'car', so...

'^.*car'

Next up...

"followed by unspecified numbers of letters/numbers/spaces"

I'm guessing that unspecified means zero or more. This is very similar to what we did to identify any characters that might come before 'car'. Where the '.' means any character

'^.*car.*'

However, if unspecified means one or more, then you can use '+' in place of '*'

"then the word Paterson"

I'm going to assume that as this is the end of the description, there are no more characters after 'Paterson'.

'^.*car.*Paterson$'

The '$' symbol means that the 'n' of 'Paterson' must be at the end of the string.

Code example:

select
    REGEXP_INSTR('123456car1234ABCDPaterson', '^.*car.*Paterson$') as rgx
from dual

Output

       RGX
----------
         1

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM