我有一个正则表达式,如下所示:
(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
将在开头使用非单词字符。