我在使用 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(使用前将#替换为@)