Oracle 正则表达式 - 不以以下开头且不以以下结尾

2024-03-06

以下 Oracle 正则表达式不起作用,我不知道为什么。

“不以 ' 开头abc'":

^[^(abc)]

“不以 ' 结尾abc'":

[^(abc)]$

问题在于 Oracle 正则表达式引擎似乎无法将“abc”字符串识别为一个单元,而只是单独查看字母。括号 () 应该创建一个字符串单元。所以我不知道发生了什么事。我使用方括号只是因为我相信“非”运算符 ^ 只能在括​​号内操作,否则 ^ 被识别为行首。

以供参考:http://docs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm http://docs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_re.htm


像这样的不匹配测试可能会变得复杂,因此我建议测试匹配并否定结果。

不开始于abc:

WHERE NOT REGEXP_LIKE(myString, '^abc')

不结束于abc:

WHERE NOT REGEXP_LIKE(myString, 'abc$')

至于为什么它不起作用,正如 @DavidKnipe 在他的回答中所说:这是因为你正在使用字符类。正则表达式^[^(abc)]解析出来是这样的:

  • 首先^说“锚定到字符串的开头”
  • The [^(abc)]是一个字符类,表示“匹配任何single字符,只要它不是( or a or b or c or )".
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle 正则表达式 - 不以以下开头且不以以下结尾 的相关文章

随机推荐