Regexp_substr上的Oracle Query

时间:2017-05-23 07:04:49

标签: regex oracle regexp-substr

我正在尝试使用Regexp_substr从属性字段中提取单元号。 以下是查询。

regexp_substr(PROPERTY,'(#)[^\S]+ ')

虽然一些结果是正确的,但其他人回来如下:

#05-08 DOVER PARKVIEW

我是否知道如何省略所有字母或字词? 谢谢。

1 个答案:

答案 0 :(得分:1)

[^\S]模式匹配任何字符,但\和大写字母S

你需要在-之后捕获1+位数,然后再追加#之后的1位数,并仅用

提取该部分匹配
regexp_substr(PROPERTY, '#(\d+-\d+)', 1, 1, NULL, 1)

最后一个1参数告诉正则表达式引擎提取ID为1的捕获组的内容(它是模式中唯一的捕获组)。

  • # - 文字#
  • (\d+-\d+) - 捕获第1组匹配:
    • \d+ - 一位或多位
    • - - 连字符
    • \d+ - 一位或多位数。

请参阅online demo

select regexp_substr('#05-08 DOVER PARKVIEW', '#(\d+-\d+)', 1, 1, NULL, 1) as RESULT from dual

enter image description here