0

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

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

虽然有些结果是正确的,但其他结果如下所示:

#05-08 DOVER PARKVIEW

我可以知道我需要做什么来省略所有的字母或措辞吗?谢谢你。

4

1 回答 1

1

[^\S]模式匹配除 a\和大写字母之外的任何字符S

您需要-在 a 之后捕获 1+ 个数字,然后再捕获 1+ 个数字,并#仅使用

regexp_substr(PROPERTY, '#(\d+-\d+)', 1, 1, NULL, 1)

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

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

查看在线演示

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

在此处输入图像描述

于 2017-05-23T07:52:39.207 回答