我正在尝试定义一个匹配字符串和数字的正则表达式,它不是以 40821 开头,所以 '40822433598347597' 匹配,而 '408211' 不匹配。所以,我试过了
^(?!40821)\d+
在我的正则表达式编辑器中完美运行,但在 oracle 中仍然无法运行。我知道,它很容易使用where not
,但我的目标是只使用正则表达式。请给一些建议,我做错了什么?
我正在尝试定义一个匹配字符串和数字的正则表达式,它不是以 40821 开头,所以 '40822433598347597' 匹配,而 '408211' 不匹配。所以,我试过了
^(?!40821)\d+
在我的正则表达式编辑器中完美运行,但在 oracle 中仍然无法运行。我知道,它很容易使用where not
,但我的目标是只使用正则表达式。请给一些建议,我做错了什么?
根据这个问题,Oracle 不支持负前瞻和后瞻。
一种方法是使用交替显式枚举可能性。在您的情况下,它将类似于:
^([012356789]|4[123456789]|40[012345679]|408[013456789]|4082[023456789])
我认为您尝试使用负面的lookbehind:
(?<!a)b matches a "b" that is not preceded by an "a"
来源:http ://www.regular-expressions.info/lookaround.html
Oracle 不支持这种 Perl 的语法。