1

我正在尝试定义一个匹配字符串和数字的正则表达式,它不是以 40821 开头,所以 '40822433598347597' 匹配,而 '408211' 不匹配。所以,我试过了

^(?!40821)\d+

在我的正则表达式编辑器中完美运行,但在 oracle 中仍然无法运行。我知道,它很容易使用where not,但我的目标是只使用正则表达式。请给一些建议,我做错了什么?

4

2 回答 2

3

根据这个问题,Oracle 不支持负前瞻和后瞻。

一种方法是使用交替显式枚举可能性。在您的情况下,它将类似于:

^([012356789]|4[123456789]|40[012345679]|408[013456789]|4082[023456789])
于 2013-06-24T16:44:04.050 回答
0

我认为您尝试使用负面的lookbehind:

(?<!a)b matches a "b" that is not preceded by an "a"

来源:http ://www.regular-expressions.info/lookaround.html

Oracle 不支持这种 Perl 的语法。

于 2013-06-24T18:46:12.670 回答