Oracle REGEXP_LIKE 和字边界

2023-11-22

我在使用 REGEXP_LIKE 匹配单词边界时遇到问题。正如预期的那样,以下查询返回一行。

select 1 from dual
where regexp_like('DOES TEST WORK HERE','TEST');

但我也想匹配单词边界。因此,添加“\b”字符给出了这个查询

select 1 from dual
where regexp_like('DOES TEST WORK HERE','\bTEST\b');

运行此命令将返回零行。有任何想法吗?


我相信你想尝试

 select 1 from dual 
  where regexp_like ('does test work here', '(^|\s)test(\s|$)');

因为\b没有出现在此列表中:Oracle 正则表达式中受 Perl 影响的扩展

The \s确保测试以空格开始和结束。然而,这还不够,因为字符串test也可以出现在匹配字符串的开头或结尾。因此,我使用选择(由|) ^用于字符串的开头和$为字符串结尾。

更新(3年后+)...碰巧,我今天需要这个功能,在我看来,正则表达式更好(^|\s|\W)test($|\s|\W) (Oracle中缺少\b正则表达式特殊字符).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle REGEXP_LIKE 和字边界 的相关文章

随机推荐