使用oracle REGEXP_INSTR的正则表达式

时间:2017-11-14 16:05:27

标签: sql regex oracle

我想在查询中使用REGEXP_INSTR函数来搜索用户输入的任何匹配,但我不知道如何编写正则表达式,例如将匹配包含单词car后跟未指定数字的任何值字母/数字/空格然后是帕特森这个词。任何人都可以帮我写这个regEx吗?

1 个答案:

答案 0 :(得分:0)

好的,让我们打破这个。

"包含单词car"

的任何值

我猜测汽车这个词并不需要在字符串的开头,所以我会用...开始格式字符串。

'^.*'

这里' ^'字符表示字符串的开头,'。'是指任何角色和' *'表示前面字符的0或更多。所以在字符串开头之后任何字符都是零或更多。

然后单词' car',所以......

'^.*car'

接下来......

"其次是未指定数量的字母/数字/空格"

我猜测未指明意味着零或更多。这非常类似于我们所做的识别可能出现在汽车之前的任何角色。在哪里'。'意味着任何角色

'^.*car.*'

但是,如果未指定意味着一个或多个,那么您可以使用' +'取代' *'

"然后是Paterson这个词"

我将假设因为这是描述的结尾,所以在“帕特森”之后不再有人物。

'^.*car.*Paterson$'

' $'符号表示' n' '帕特森'必须在字符串的末尾。

代码示例:

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

输出

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