在oracle plsql中使用正则表达式搜索模式

时间:2017-04-19 12:53:31

标签: sql regex oracle

我是数据库开发的新手。我有一个新的任务。 我需要从列中的13xxxxx开始找到一个模式,其中包含如下数据:

["1301800-" "1321002-" "1202038-" "1201505-[\"32909062963\"]"]

试图使用正则表达式,但我没有得到理想的结果。

1 个答案:

答案 0 :(得分:0)

这是一个可以执行您想要的正则表达式:'"13[0-9]{5}\-?'。它匹配从13开始的七位数字和一个可选的尾随减号。

此示例修剪前导"以便整理:

SQL> with dta as
  2    ( select '["1301800-" "1321002-" "1202038-" "1201505-[\"32909062963\"]"]' str
  3      from dual )
  4  select trim('"' from
  5              regexp_substr(str, '"13[0-9]{5}\-?', 1, level)
  6            ) as tkn
  7  from dta
  8  connect by level <= regexp_count(str, '"13[0-9]{5}\-?')
  9  /

TKN
----------
1301800-
1321002-

SQL>