Regex Oracle正则表达式-不以开头,也不以结尾
下面的Oracle正则表达式不起作用,我不知道为什么 “不以'abc'开头”: “不以‘abc’结尾”: 问题在于Oracle正则表达式引擎似乎无法将“abc”字符串识别为一个单元,而只是单独查看字母。括号()用来创建字符串单位。所以我不知道发生了什么。我之所以使用方括号,是因为我相信“not”运算符^只在括号内操作,否则^被认为是行的起点 供参考:Regex Oracle正则表达式-不以开头,也不以结尾,regex,oracle,Regex,Oracle,下面的Oracle正则表达式不起作用,我不知道为什么 “不以'abc'开头”: “不以‘abc’结尾”: 问题在于Oracle正则表达式引擎似乎无法将“abc”字符串识别为一个单元,而只是单独查看字母。括号()用来创建字符串单位。所以我不知道发生了什么。我之所以使用方括号,是因为我相信“not”运算符^只在括号内操作,否则^被认为是行的起点 供参考: 像这样的非匹配测试可能会变得复杂,所以我建议测试匹配并否定结果 不以abc开头: WHERE NOT REGEXP_LIKE(myString,
像这样的非匹配测试可能会变得复杂,所以我建议测试匹配并否定结果 不以abc开头:
WHERE NOT REGEXP_LIKE(myString, '^abc')
WHERE NOT REGEXP_LIKE(myString, 'abc$')
不以abc结尾:
WHERE NOT REGEXP_LIKE(myString, '^abc')
WHERE NOT REGEXP_LIKE(myString, 'abc$')
至于为什么它不起作用,正如@DavidKnipe在他的回答中所说:这是因为你使用了角色类。正则表达式
^[^(abc)]
解析如下:
- 第一个
表示“锚定到字符串的开头”^
是一个字符类,表示“匹配任何单个字符,只要它不是[^(abc)]
或(
或a
或b
或c
”)
- 像这样的非匹配测试可能会变得复杂,因此我建议测试匹配并否定结果
不以abc开头:
WHERE NOT REGEXP_LIKE(myString, '^abc')
WHERE NOT REGEXP_LIKE(myString, 'abc$')
不以abc结尾:
WHERE NOT REGEXP_LIKE(myString, '^abc')
WHERE NOT REGEXP_LIKE(myString, 'abc$')
至于为什么它不起作用,正如@DavidKnipe在他的回答中所说:这是因为你使用了角色类。正则表达式
^[^(abc)]
解析如下:
- 第一个
表示“锚定到字符串的开头”^
是一个字符类,表示“匹配任何单个字符,只要它不是[^(abc)]
或(
或a
或b
或c
”)
^
运算符仅适用于字符类。但是你不应该使用角色类。我不知道Oracle正则表达式是否允许lookaround操作(lookahead和lookback)。如果是,请使用^(?abc)
和(?。求反的^
运算符仅适用于字符类。但您不应该使用字符类。我不知道Oracle正则表达式是否允许环顾操作(向前看和向后看)。如果允许,请使用^(?abc)
和(?。请尝试:([^A]..[^B].*.[^C]@parzival aabbcc不适用于您的正则表达式,我认为它应该适用于OP。请尝试:([^A].[^B].[^C].@parzival aabbcc不适用于您的正则表达式,我认为它应该适用于OP。不幸的是,它们不适用于OP。不幸的是,它们不适用于OP。