【发布时间】:2015-11-20 09:57:15
【问题描述】:
我有一个地址数据库,其中首字母缩写词用空格分隔,我想删除这些空格,所以我求助于可靠的正则表达式。但是,我正在努力对正则表达式结果 '\&' 执行辅助功能 - 我已经检查了论坛和文档,但无法使其正常工作。我的示例数据如下:
- “A V C 焊接”应为“AVC 焊接”
- “H S B C”应为“汇丰银行”
- 等等..
我有以下正则表达式:
trim(regexp_replace(organisation || ' ', '(([A-Z]\s){1}){2,}', replace('\&',' ',''), 'g'))
replace('\&',' ','') 根本没有任何效果,我只是得到了相同的字符串。我尝试过其他功能,例如lower('\&') 这些似乎都没有按预期工作。与 || 连接但是确实有效。我尝试将“\&”转换为文本,尝试replace('' || '\&' || '',' ','') - 仍然没有乐趣。
任何建议都将不胜感激,我确信解决方案非常简单,但我只是看不出下一步该去哪里!
【问题讨论】:
-
嗨 Vivek - 感谢您的回复,如上所述,我希望能够将“A V C Welding”转换为“AVC Welding”,将“H S B C”转换为 HSBC 等。它也需要为多个首字母缩写词,因此“PD James & H S Wilson”需要是“PD James & HS Wilson”。非常感谢您提供的任何建议。
-
所以确认
select trim(regexp_replace('A V C Welding', '(([A-Z]\s){1}){2,}', replace('\&',' ',''), 'g'));返回A V C Welding而我期待AVC Welding -
你到底想用
replace('\&', ' ', '')做什么?这种方式肯定是无操作的。 -
嗨,帕特里克,感谢您的回复-我遵循的逻辑是:'找到字符串中的所有首字母缩写词,每个都替换任何空格'-所以我期待
'\&包含正则表达式的匹配文本,我将能够替换其中的空格并获得我需要的内容,例如将“A V C 焊接”转变为“AVC 焊接”。如果我使用固定字符串而不是函数,它可以工作,例如select trim(regexp_replace('A V C Welding', '(([A-Z]\s){1}){2,}', 'XXX ', 'g'));返回 'XXX Welding' 所以我认为我离得不远。
标签: regex postgresql string-function