2014-07-08 53 views
1

我試圖用Oracle的regexp_replace替換單詞,並且我需要類似零長度\b字邊界的內容。由於某些原因,Oracle選擇不實施這一點。如果我使用\W我可以找到沒有問題的單詞,但是當我去替換它們時,我還替換了由\W發現的單詞邊界。例如:Oracle REGEXP_REPLACE字邊界是否存在與 b字邊界相同的等價物?

SELECT regexp_replace('DOES JULIE WORK .JULIE. HERE','\Wjulie\W', 'James', 1, 0, 'i') regex FROM dual; 

返回此字符串:

DOESJamesWORK James HERE 

我想它返回:

DOES James WORK .James. HERE 
+1

找出來了。這個作品: SELECT regexp_replace('DOES JULIE WORK .JULIE。HERE','(\ W)julie(\ W)','\ 1James \ 2',1,0,'i')regex FROM dual; 每天學習一些關於正則表達式的新東西! – user3817848

回答

0

在您的評論的正則表達式匹配模式如果JULIE出現在非常不工作字符串的開始或結束。試試這個,包括一開始和結束行:

'(^|\W)julie(\W|$)' 

說明:

^=錨線開始

| = OR

$ =該行末尾的錨點