【发布时间】:2017-06-30 19:19:29
【问题描述】:
只有当街道后面没有任何字母时,我才尝试用 st 替换街道。如果街道后有非字母字符或字符串结尾,则允许替换。
我试图在 Postgresql 9.5 regex_replace 函数中实现这一点。我写的示例查询:
select regexp_replace('super streetcom','street(?!=[a-z])','st');
这里的street 不应该被st 替换,因为street 后面是'c'。所以预期的输出是“super streetcom”,但我得到的输出是“super stcom”。
任何关于为什么我得到意外输出的帮助以及什么是实现预期结果的正确方法。
【问题讨论】:
-
你确定
(?!=pattern)是postgresql 中正确的否定前瞻语法吗?通常它只是(?!pattern) -
Ohhh.. 发现我的错误。负前瞻应该是(?!模式)。谢谢@SebastianProske
标签: regex postgresql