我有一个正则表达式http\:\/\/domainname\.com\/\S{4}
,它应该抓住这样的网址:http://domainname.com/key4
更长的文字。
我想只获取密钥并将其与postgres数据库中的表字段匹配。
在尝试了一些东西后,我来到这个查询(用于抓取键):
SELECT substring(infos FROM '[http\:\/\/domainname\.com\/\S{4}]{7}' ) AS key FROM actions
因此我得到每一行的/domainname.com
......好吧,没有钥匙,你可以看到。
任何人都可以告诉我{7}
代表什么?
答案 0 :(得分:1)
{7}
代表之前模式的7倍。因此,在这种情况下,[
和]
之间的不同字符。即[abc]{3}
匹配aaa
cba
或任何其他组合。
我很确定这不是你想要的。您可能正在寻找类似的东西:
SELECT substring('http://domainname.com/key4' from 'http://domainname\\.com/\\S{4}')
FROM actions
答案 1 :(得分:0)
这可能就是你在这个具体案例中寻找的东西
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+$');
可能更合适