我正在尝试使用Regexp_substr从属性字段中提取单元号。 以下是查询。
regexp_substr(PROPERTY,'(#)[^\S]+ ')
虽然一些结果是正确的,但其他人回来如下:
#05-08 DOVER PARKVIEW
我是否知道如何省略所有字母或字词? 谢谢。
答案 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