0

有人可以帮助我使用正则表达式吗?

我想检查给定字符串中是否存在“,”。

字面量:First_Name+;Last_Name+John, Smith

在这里,我想检查 Last_Name 是否包含“,”

select case when regexp_instr('First_Name+;Last_Name+John, Smith;Home_Adress+Michigan',
                                       '^(.*?\;|\+)*Last_Name\+(.*\,).*$', ',') > 1

 then 'ok' else 'nok' end as test1 from dual;
4

2 回答 2

0

为什么在这里使用正则表达式?

case when 
    regexp_like(
      'First_Name+;Last_Name+John, Smith;Home_Adress+Michigan', 
      '(^|;)Last_Name\+[^;]*,'
    )
  then 'present' 
  else 'not present' 
end 
于 2013-04-18T09:39:53.773 回答
0

regexp_instr() 的第三个参数是一个可选的起始位置 - 只需省略它。

此外,由于您的正则表达式匹配整个字符串,因此检查 regexp_instr() > 1 是没有意义的 - 如果匹配,则 regexp_instr() 将返回 1,否则返回 0。

with v_data as (
  select 'First_Name+;Last_Name+John, Smith;Home_Adress+Michigan' as name from dual 
  union all
  select 'First_Name+John;Last_Name+Smith;Home_Adress+Michigan' as name from dual 
)
select 
  name, 
  regexp_instr(name, '^(.*?\;|\+)*Last_Name\+(.*\,).*$') 
from v_data
于 2013-04-18T09:34:42.857 回答