Oracle REGEXP_LIKE 函数 - 这是什么匹配?
Oracle REGEXP_LIKE function - what is this matching?
我正在查看别人的代码,我没有 运行 的选项,也无法弄清楚下面的 REGEXP_LIKE 试图匹配什么。任何帮助将不胜感激。
REGEXP_LIKE('field_name', '^(ABC:)?Z[DEF]')
我认为正在发生的事情如下,但我认为我错了:
尝试匹配任何字段:
以 ABC 开头:
以 D、E 或 F
结尾
我知道 ^ 匹配字符串的开头,并且 () 括号对表达式进行分组,因此对 ABC 进行分组:
然而,让我感到困惑的是?Z。
任何帮助将不胜感激,无论我阅读了多少文章,我似乎都无法理解这个问题。
尝试使用一些不同的字符串:
with example as (select 'BC:ZDEF' as x from dual
union select 'ABC:D' from dual
union select 'ABC:ZE' from dual
union select 'ZE' from dual
union select 'ZF' from dual)
select x
from example
where REGEXP_like(x, '^(ABC:)?Z[DEF]');
输出:
x
ABC:ZE
ZE
ZF
所以这是怎么回事?你说得对 ^
意思是一行的开头。 ?
运算符表示 the thing that comes before this is optional - it should occur 1 or 0 times
。在本例中,即 (ABC:)
,因此字符串的该部分是可选的。
然后我们有一个Z
,这是强制性的,后面跟着一个括号表达式,这意味着括号之间列出的任何单个字符 - 所以D,E , 或 F.
所以表达式的意思是"a line starting with Z followed by D, E, or F, optionally with an "ABC:"开头"。
我正在查看别人的代码,我没有 运行 的选项,也无法弄清楚下面的 REGEXP_LIKE 试图匹配什么。任何帮助将不胜感激。
REGEXP_LIKE('field_name', '^(ABC:)?Z[DEF]')
我认为正在发生的事情如下,但我认为我错了:
尝试匹配任何字段:
以 ABC 开头: 以 D、E 或 F
结尾我知道 ^ 匹配字符串的开头,并且 () 括号对表达式进行分组,因此对 ABC 进行分组:
然而,让我感到困惑的是?Z。
任何帮助将不胜感激,无论我阅读了多少文章,我似乎都无法理解这个问题。
尝试使用一些不同的字符串:
with example as (select 'BC:ZDEF' as x from dual
union select 'ABC:D' from dual
union select 'ABC:ZE' from dual
union select 'ZE' from dual
union select 'ZF' from dual)
select x
from example
where REGEXP_like(x, '^(ABC:)?Z[DEF]');
输出:
x
ABC:ZE
ZE
ZF
所以这是怎么回事?你说得对 ^
意思是一行的开头。 ?
运算符表示 the thing that comes before this is optional - it should occur 1 or 0 times
。在本例中,即 (ABC:)
,因此字符串的该部分是可选的。
然后我们有一个Z
,这是强制性的,后面跟着一个括号表达式,这意味着括号之间列出的任何单个字符 - 所以D,E , 或 F.
所以表达式的意思是"a line starting with Z followed by D, E, or F, optionally with an "ABC:"开头"。