首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >regexp_replace上的函数在Postgres中的结果

regexp_replace上的函数在Postgres中的结果
EN

Stack Overflow用户
提问于 2015-11-20 09:57:15
回答 1查看 239关注 0票数 2

我有一个用空格分隔缩略词的地址数据库,我想删除这些空间,所以我转而使用可靠的正则表达式。但是,我很难在regexp结果'\&‘上执行一个次要功能--我已经检查了论坛和文档,只是无法让它工作。我拥有的示例数据如下:

  • “AVC焊”应为“AVC焊”
  • 'HSBC‘应该是’HSBC‘
  • 等等。

我有以下的regexp:

代码语言:javascript
复制
trim(regexp_replace(organisation || ' ', '(([A-Z]\s){1}){2,}', replace('\&',' ',''), 'g'))

replace('\&',' ','')根本没有任何效果,我只是得到相同的字符串返回。我尝试过其他功能,例如lower('\&'),这些功能似乎都不像预期的那样有效。但是,将它连接起来是可行的。我试着用“\&”来发短信,试着用replace('' || '\&' || '',' ','') --尽管如此,没有joy。

任何建议都会很感激,我相信解决方案是很简单的,但我只是不知道下一步该去哪里!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-20 12:43:49

你试图用\&做的事情永远不会奏效。\&模式将取代整个模式,但您需要一个可以在各个部分上工作的解决方案。

您需要的是将模式CAPITAL-space替换为CAPITAL,但只在后面跟着另一个大写时,这不是一个较长的单词的开始。换句话说:您需要负向前看,如果模式匹配,那么只替换替换字符串的第一个原子:

代码语言:javascript
复制
select regexp_replace('A V C Welding', '([A-Z]){1}(\s){1}(?![A-Z][a-z])', '\1', 'g');

如果需要的话,你可以用更广泛的东西代替负的展望模式(比如没有大写字母开始,数字,标点符号等等)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33823754

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档