gpt4 book ai didi

regex - 在 PostgreSQL 中匹配部分反向引用

转载 作者:行者123 更新时间:2023-11-29 13:09:15 24 4
gpt4 key购买 nike

我正在尝试使用 regexp_replace 函数清理格式错误的 JSON 字符串。我有一个如下所示的字符串:

{ 0: {"foo": "bar", "baz": "24/05/2016", "qux": "12"}, 
1: {"foo": "bar", "baz": "04/11/2015", "qux": "13"},
2: {"foo": "bar", "baz": "25/07/2016", "qux": "14"}
}

为了制作这个有效的 JSON,我需要用双引号将数字键括起来。我不想捕获每个嵌套对象中的现有数字数据。

我最初想使用反向引用,匹配那些后跟冒号的数字,但当然捕获的反向引用包含冒号,我不想用引号引起来。

regexp_replace("column_to_fix", '\d:', '"\&"', 'g') as "cleaned"

不会完全这样做,因为每个带有冒号 \d: 的数字键都会被引号括起来,而不仅仅是数字。从概念上讲,使用 python 语法,我想用 "\&[-1]" 替换匹配。是否可以获取反向引用的子字符串?

我努力的结果是:

{ "0": {"foo": "bar", "baz": "24/05/2016", "qux": "12"}, 
"1": {"foo": "bar", "baz": "04/11/2015", "qux": "13"},
"2": {"foo": "bar", "baz": "25/07/2016", "qux": "14"}
}

最佳答案

您不能按照您想要的方式操作字符串替换模式实体。

改为使用捕获组并在替换模式中对其进行相应的反向引用:

regexp_replace("column_to_fix", '([0-9]+):', '"\1":', 'g') as "cleaned"

此处,([0-9]+): 会将一个或多个数字捕获到第 1 组中,并且将只匹配一个冒号,匹配项将被替换为这些数字在第 1 组中,双引号和冒号将附加到此子字符串。

关于regex - 在 PostgreSQL 中匹配部分反向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57084020/

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