【问题标题】:Is there an equivalent for Oracle REGEXP_REPLACE Word Boundary that acts like \b word boundary?Oracle REGEXP_REPLACE Word Boundary 是否有类似 \b 字边界的等效项?
【发布时间】:2014-07-09 04:32:08
【问题描述】:

我正在尝试使用 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

【问题讨论】:

  • 想通了。这有效: SELECT regexp_replace('DOES JULIE WORK .JULIE. HERE','(\W)julie(\W)', '\1James\2', 1, 0, 'i') regex FROM dual;每天学习一些关于正则表达式的新知识!

标签: regex oracle


【解决方案1】:

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

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

解释:

^ = 行首的锚点

| = 或

$ = 行尾的锚点

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 2011-10-07
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 2019-03-12
    相关资源
    最近更新 更多