我正在尝试从PostgreSQL中的列值中提取大量字符串。
所以基本上我在表格中的列中有文字,如下所示:
blah blah blah.... <something="AValueIWant">....dfdf.gd d.fg d.fd... <something="AnotherValueIWant">.
我希望能够以这样的形式运行查询以提取“AValueIWant”和“AnotherValueIWant”(不带引号):
regex_matches
-------------
AValueIWant
AnotherValueIWant
让我们调用列“body”和表“tablebody”。
到目前为止,我有类似的内容:
select regexp_matches(body, <some kind of pattern that doesn't work>, 'g') from tablebody
我觉得没有任何价值可以发布我尝试过的东西,因为它们都不起作用!我查看了docos并尝试了类似'something(。+)\“'之类的内容,但是返回了整个正文。我在网上发现的其他模式就像'/”([^“] * /”'什么都不返回有没有其他人更好地掌握知道答案的正则表达式,或者其他方式来做到这一点:)?我很新手。
谢谢!
答案 0 :(得分:1)
select a[1]
from (
select regexp_matches(body, '="(.+?)"', 'g') a
from tablebody
) s
但我宁愿使用专门的HTML解析器,除非它是你想要的非常快速和肮脏的工作。
答案 1 :(得分:0)
你可以试试这个:
<something="([^"]+)">
或更通用:
<[A-Za-z]+="([^"]+)">
如果您不关心属性的名称,甚至更通用:
="([^"]+)"
或者......你明白了。