以下正则只需使用反标数提取匹配文本的一部分:
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.
,但是,还有其他一些正则函数可能会有所帮助。 如果您可以通过现实世界中的问题更新您的问题,我可以更具体地提供帮助。 但这是一个示例,可以使用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)
根据文献
字符串可以包含m
是一个非零的数字,而
是更多的数字,小数点值不大于到目前为止所看到的关闭捕获括号的数量)的后背引用了then subexpressionnn
,无论如何,看来它们在mnn
:中没有支持。mnn
regexp_replace
,其中replacement
是1至9,以指示应插入与图案的parde括号相匹配的源子字符串匹配……
,纯sql,包装函数
I将preferpreferthe the the the the the the the the@samin gerenone,但创建了一个不错的\n
the中的混乱术语:背reference是对较早匹配的组的引用
与正则表达式,例如
n
用于匹配“ abxcabx”,“ abycaby”等
此问题的主题是在替换字符串中引用,这只是匹配组参考。
请注意,提到的PostgreSQL文档使用正确的术语。