【发布时间】:2016-11-16 07:45:23
【问题描述】:
我们在数据库中有一列包含类似于“150 W 96 Th St”和“4514 282 Nd St”的值。您可能已经注意到,数字街道名称和后缀之间有一个空格,即“96 TH”。
我正在尝试编写一个删除该空间的 postgresql 查询。使用以下内容:
SELECT regexp_matches('150 W 96 Th St', ' \d+( )(?:St|Nd|Rd|Th) ')
我明白了:
{" "}
表示只返回捕获组。
但是,当我运行时
SELECT regexp_replace('150 W 96 Th St', ' \d+( )(?:St|Nd|Rd|Th) ', '')
我明白了
150 WSt
整个匹配字符串被替换。
我也试过
SELECT regexp_replace('150 W 96 Th St', ' \d+( )(?:St|Nd|Rd|Th) ', '\1')
我认为它只会替换第一个捕获组。
我还应该尝试什么?
【问题讨论】:
标签: regex postgresql regexp-replace