4

我正在编写一个PL/SQL Oracle 程序,在列中查找可能的客户编号。客户编号为7 位数字,可以前缀或后缀任意数量的字符。然而,一些值包含 > 7 digit numbers,在这些情况下我想忽略它们。所以"A/C 1234567" 和 "Cust1234567B"应该返回匹配客户编号1234567,但 " 01234567 " 和 " 123456789 " 不应该。

我正在使用\d{7},但这会返回所有示例的匹配项,所以我正在寻找类似的东西(?<!\d)\d{7}(?!\d)- 但不支持负前瞻和后瞻。有什么建议么?

4

2 回答 2

6

如果没有可用的lookahed和lookbehind断言,您可以尝试

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

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

于 2013-06-10T04:43:59.460 回答
4

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

NOT regexp_like(<pattern_you_want_to_negate>)
于 2013-07-11T04:04:41.350 回答