Regex postgresql正则表达式和子字符串
我有一个正则表达式Regex postgresql正则表达式和子字符串,regex,postgresql,substring,Regex,Postgresql,Substring,我有一个正则表达式http\:\/\/domainname\.com\/\S{4},它应该可以捕获如下URL:http://domainname.com/key4在较长的文本中 我只想获取键并将其与postgres数据库中的表字段相匹配 在尝试了一些东西之后,我来到了这个查询(用于抓取密钥): 因此,我得到了每一行的/domainname.com。。。嗯,没有你看到的钥匙 我做错了什么 谁能告诉我{7}代表什么吗?这个{7}代表前一个模式的7倍。因此在本例中,在[和]之间使用不同的字符。i、 e
http\:\/\/domainname\.com\/\S{4}
,它应该可以捕获如下URL:http://domainname.com/key4
在较长的文本中
我只想获取键并将其与postgres数据库中的表字段相匹配
在尝试了一些东西之后,我来到了这个查询(用于抓取密钥):
因此,我得到了每一行的/domainname.com
。。。嗯,没有你看到的钥匙
我做错了什么
谁能告诉我
{7}
代表什么吗?这个{7}
代表前一个模式的7倍。因此在本例中,在[
和]
之间使用不同的字符。i、 e.[abc]{3}
匹配aaa
cba
或任何其他组合
我相当肯定这不是你想要的。您可能正在寻找类似的内容:
SELECT substring('http://domainname.com/key4' from 'http://domainname\\.com/\\S{4}')
FROM actions
这可能就是您在这个特定案例中所寻找的
select substring(substring('long text [http://domainname.com/key4] more text',E'http\:\/\/domainname\.com\/\\S{4}'),E'\\S{4}$');
如果关键部分为四个字符长,则将提取关键部分。如果您可能也在寻找类似key456的东西,那么可以使用更通用的匹配项,例如
select substring(substring('long text [http://domainname.com/key467] more text',E'http\:\/\/domainname\.com\/key\\d+'),E'key\\d+$');
也许更合适@helle:你能举个例子说明一下
infos
的样子吗?因为它应该与给定的表达式一起工作(与我提供的所有测试数据一起工作),infos包含一个JSON字符串。
select substring(substring('long text [http://domainname.com/key467] more text',E'http\:\/\/domainname\.com\/key\\d+'),E'key\\d+$');