Oracle REGEXP_REPLACE Word Boundary是否具有类似\ b字边界的等价物?

时间:2014-07-08 19:29:15

标签: regex oracle

我正在尝试使用Oracle的regexp_replace替换单词,我需要的东西就像零长度\b字边界一样。出于某种原因,Oracle选择不实现这一点。如果我使用\W我可以找到没有问题的单词,但是当我去替换它们时,我也会替换\W找到的单词边界。例如:

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 个答案:

答案 0 :(得分:0)

如果JULIE出现在字符串的开头或结尾,则评论中的正则表达式匹配模式不起作用。尝试这样做,包括行的开头和结尾:

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

说明:

^ =开始行的锚

| = OR

$ =行尾的锚点