将Regex转换为Oracle表达式-(\b|\d)(?i)INT(\b|/d)



我有一个正则表达式,如下所示:

(b|d)(?i)INT(b|d)

它按我的意愿工作https://regex101.com/

但当试图让它与甲骨文的Regex合作时。。。我从这个开始:

SELECT REGEXP_INSTR('INT', '(b|d)(?i)INT(b|d)') AS FOUND FROM DUAL WHERE 1=1 ;

和各种各样的变体,但没有成功,希望得到一些帮助

注意,第一个参数"INT"当然是我想搜索的表中的一个字段,等等

如果您计划只检查匹配,您可以"分解";b转换为(^|W|d)/($|W|d)并使用:

SELECT REGEXP_INSTR('INT', '(^|W|d)INT($|W|d)', 1, 1, 0, 'i')

此处,(^|W|d)INT($|W|d)与匹配

  • (^|W|d)-字符串、非单词字符或数字的开头
  • INT-INT字符串
  • ($|W|d)-字符串结尾,或非单词字符或数字

REGEXP_INSTR的第六个参数是匹配参数参数,'i'表示不区分大小写。因此,此函数将返回从字符串中的第一个字符(请参阅第三个位置参数

使用这种单一regex方法返回INT的确切位置是不可能的,因为W将在开头使用非单词字符。

最新更新