我試圖檢查正則表達式'\b<word>\b'
特定單詞的存在的字符串,但似乎\b
錨不REGEXP_SUBSTR工作:檢查單詞的字符串存在由Oracle REGEXP_SUBSTR
例如檢查一個字ABC
:
SELECT REGEXP_SUBSTR ('A, AB, ABC,ABCD', '\bABC\b') FROM DUAL;
但這裏的結果是(null)。我做錯了什麼?
我試圖檢查正則表達式'\b<word>\b'
特定單詞的存在的字符串,但似乎\b
錨不REGEXP_SUBSTR工作:檢查單詞的字符串存在由Oracle REGEXP_SUBSTR
例如檢查一個字ABC
:
SELECT REGEXP_SUBSTR ('A, AB, ABC,ABCD', '\bABC\b') FROM DUAL;
但這裏的結果是(null)。我做錯了什麼?
要檢查一個字符串是否包含給定的單詞,並且假設只能分隔字符串中的兩個單詞的唯一字符是逗號和空格,則只需處理這兩個字符即可在開頭的字符串的結尾:
SELECT 1 from dual
where REGEXP_LIKE ('A, AB, ABC,ABCD', '(^| |,)ABC(,|$|)')
它是如何工作的:
(^| |,)
意味着這個詞可以用前面加什麼(字符串的開頭),由逗號或空間;
同樣(,|$|)
意味着該字後面可以跟一個逗號,沒有什麼(該字符串的結尾)或
謝謝,它的工作原理!但是爲什麼我不能用'\ b'錨來匹配一個字的邊界位置:'\ bABC \ b'? – shaf
你想用'\ B'做的一個空間?你只需要得到'ABC',不包括例如'xABC','ABCy','xABCY'? – Aleksej
是的,我想檢查整個單詞 - 在我的情況下,單詞'ABC',而不是字符串'ABC'作爲單詞'ABCD'的一部分。 – shaf