如何在postgresql正则表达式中使用9以上的反向表示?

问题描述 投票:0回答:3

以下正则只需使用反标数提取匹配文本的一部分:

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.

regex postgresql
3个回答
2
投票
我在评论和 @p.s.w.g的答案中说了,根据文件,这是不可能的。

,但是,还有其他一些正则函数可能会有所帮助。 如果您可以通过现实世界中的问题更新您的问题,我可以更具体地提供帮助。 但这是一个示例,可以使用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)

    

根据
文献

1
投票

\mnn

(其中
m

是一个非零的数字,而

nn
是更多的数字,小数点值不大于到目前为止所看到的关闭捕获括号的数量)的后背引用了then subexpression


,无论如何,看来它们在
mnn
中没有支持。
  

mnn
字符串可以包含

regexp_replace,其中replacement

是1至9,以指示应插入与图案的parde括号相匹配的源子字符串匹配……

I将prefer
prefer
the the the the the the the the the@sam
in gerenone
,但创建了一个不错的
\n

,纯sql,包装函数

0
投票

the中的混乱术语:背reference是对较早匹配的组的引用

与正则表达式,例如
n 用于匹配“ abxcabx”,“ abycaby”等 此问题的主题是在替换字符串中引用,这只是匹配组参考。 请注意,提到的PostgreSQL文档使用正确的术语。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.