gpt4 book ai didi

regex - 如何在 PostgreSQL 正则表达式中使用超过 9 的反向引用?

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

以下正则表达式使用反向引用数字简单地提取了一部分匹配文本:

SELECT regexp_replace('ABCDEFGHIJ','(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)','\2');
B

但是如何反向引用超过第九个匹配的子串呢?

以下将不起作用(返回第一个匹配项 + 0),使用 $10 或 ${10} 也不起作用:

SELECT regexp_replace('ABCDEFGHIJ','(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)','\10')
A0

注意:为了清楚起见,这个例子被简化了,当然不需要超越反向引用 9。

最佳答案

正如我在评论和@p.s.w.g 的回答中所说,根据 the documentation这是不可能的。

但是,还有一些其他 RegEx 函数可能会有所帮助。如果您可以用现实世界的问题更新您的问题,我可以提供更具体的帮助。但这是一个使用 regexp_matches() 解决您最初问题的示例。

SELECT matches[10]
FROM regexp_matches('ABCDEFGHIJ', '(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)(\w)') AS matches;

matches
---------
J
(1 row)

关于regex - 如何在 PostgreSQL 正则表达式中使用超过 9 的反向引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25251854/

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