通过Oracle REGEXP\u SUBSTR检查字符串中是否存在单词
我试图通过正则表达式“\b\b”检查字符串中是否存在特定单词,但似乎\b锚点在REGEXP\u SUBSTR中不起作用: 例如,要查找单词ABC:通过Oracle REGEXP\u SUBSTR检查字符串中是否存在单词,regex,oracle,regexp-substr,Regex,Oracle,Regexp Substr,我试图通过正则表达式“\b\b”检查字符串中是否存在特定单词,但似乎\b锚点在REGEXP\u SUBSTR中不起作用: 例如,要查找单词ABC: 但是这里的结果是空的。我做错了什么?要准确地检查字符串是否包含给定的单词,并假设字符串中唯一可以分隔两个单词的字符是逗号和空格,您需要做的就是处理这两个字符,甚至考虑到字符串的开头和结尾: SELECT 1 from dual where REGEXP_LIKE ('A, AB, ABC,ABCD', '(^| |,)ABC(,|$| )') 工作
但是这里的结果是空的。我做错了什么?要准确地检查字符串是否包含给定的单词,并假设字符串中唯一可以分隔两个单词的字符是逗号和空格,您需要做的就是处理这两个字符,甚至考虑到字符串的开头和结尾:
SELECT 1 from dual
where REGEXP_LIKE ('A, AB, ABC,ABCD', '(^| |,)ABC(,|$| )')
工作原理:
^||,表示该单词可以在字符串的开头加上逗号或空格,前面不加任何内容
类似地,|$|表示单词后面可以跟一个逗号,字符串末尾可以跟一个空格您想对\b做什么?是否只需要获取ABC,不包括(例如)xABC、ABCy、xABCY?是的,我想检查整个单词-在我的情况下,检查单词“ABC”,而不是作为单词“ABCD”一部分的字符串“ABC”。Oracle正则表达式不支持\b构造。您需要使用^ |[^[^[:alnum:][uu]word$|[^[^[:alnum:][uu]或^ | \Wword$| \w可能重复的谢谢,它可以工作!但是为什么我不能使用锚来匹配单词边界位置:\bABC\b?
SELECT 1 from dual
where REGEXP_LIKE ('A, AB, ABC,ABCD', '(^| |,)ABC(,|$| )')