0

我试图通过正则表达式检查字符串是否存在特定单词'\b<word>\b',但似乎\b锚在 REGEXP_SUBSTR 中不起作用:

例如检查一个词ABC

SELECT  REGEXP_SUBSTR ('A, AB, ABC,ABCD', '\bABC\b') FROM DUAL;

但这里的结果是(空)。我做错了什么?

4

1 回答 1

1

要准确地检查字符串是否包含给定的单词,并假设字符串中唯一可以分隔两个单词的字符是逗号和空格,那么您需要做的就是处理这两个字符,即使考虑到开头和字符串的结尾:

SELECT 1 from dual
where REGEXP_LIKE ('A, AB, ABC,ABCD', '(^| |,)ABC(,|$| )')

这个怎么运作:

(^| |,)表示单词前面可以没有任何内容(字符串的开头)、逗号或空格;

同样(,|$| )意味着单词后面可以跟逗号、空字符(字符串的结尾)或空格

于 2017-05-31T09:35:19.913 回答