Oracle正则表达式替换为负前瞻/后瞻

时间:2013-06-10 04:40:02

标签: regex oracle

我正在编写一个 PL / SQL Oracle过程,用于在列中查找可能的客户编号。客户编号 7位数,可以带前缀或后缀,包含任意数量的字符。但是某些值包含> 7位数字,在这些情况下我想忽略它们。因此“A / C 1234567”和“Cust1234567B”应返回客户编号 1234567 的匹配项,但“ 01234567 ”和“ 123456789 “不应该。”

我正在使用\d{7},但这会在所有示例中返回一个匹配项,因此我正在寻找与(?<!\d)\d{7}(?!\d)类似的内容 - 但不支持负前瞻和后瞻。有什么建议吗?

2 个答案:

答案 0 :(得分:5)

如果没有前瞻和后瞻断言,您可以尝试

(^|\D)\d{7}(\D|$)

http://sqlfiddle.com/#!4/d41d8/12114/0

答案 1 :(得分:3)

我遇到了同样的问题,我所做的只是

NOT regexp_like(<pattern_you_want_to_negate>)