更好的正则表达式 - PostgreSQL

时间:2017-05-04 04:31:52

标签: regex postgresql

我已经形成了这个正则表达式来获取模式之前的数字'?haid'

Select regexp_substr(regexp_substr('https:-2027-11217432?haid=4052118&uperty1','-[[:digit:]]+\\?haid'),'[[:digit:]]+')

output : 11217432

只是想检查是否有更好的方式来编写它而不使用2个正则表达式或任何其他函数。

2 个答案:

答案 0 :(得分:0)

一种方法是使用regexp_replace

删除所有内容,除了我们需要保留的内容:

select regexp_replace('https:-2027-11217432?haid=4052118&uperty1', '.*[^\d](\d+)\?haid.*', '\1')

答案 1 :(得分:0)

您可以使用 SUBSTRING

 SELECT SUBSTRING('https:-2027-11217432?haid=4052118&uperty1' FROM '.*-(\d+)\?haid.*')

或REGEXP_REPLACE

SELECT REGEXP_REPLACE('https:-2027-11217432?haid=4052118&uperty1', '.*-(\d+)\?haid.*', '\1')
相关问题