gpt4 book ai didi

regex - 如何使用 regexp_replace 只替换捕获组而不是完整的匹配字符串

转载 作者:行者123 更新时间:2023-11-29 14:18:35 27 4
gpt4 key购买 nike

我们在数据库中有一列包含类似于“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')

我认为它只会取代第一个捕获组。

我还应该尝试什么?

最佳答案

将捕获组放在您要保留的内容周围,然后在替换字符串中引用它们。

SELECT regexp_replace('150 W 96 Th St', '(\d+) (St|Nd|Rd|Th)', '\1\2')

关于regex - 如何使用 regexp_replace 只替换捕获组而不是完整的匹配字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38356454/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com