Postgresql中的Posix正则表达式从引用文本中提取?

时间:2013-04-08 09:24:22

标签: regex postgresql posix

我正在尝试从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(。+)\“'之类的内容,但是返回了整个正文。我在网上发现的其他模式就像'/”([^“] * /”'什么都不返回有没有其他人更好地掌握知道答案的正则表达式,或者其他方式来做到这一点:)?我很新手。

谢谢!

2 个答案:

答案 0 :(得分:1)

select a[1]
from (
    select regexp_matches(body, '="(.+?)"', 'g') a
    from tablebody
) s

但我宁愿使用专门的HTML解析器,除非它是你想要的非常快速和肮脏的工作。

答案 1 :(得分:0)

你可以试试这个:

<something="([^"]+)">

或更通用:

<[A-Za-z]+="([^"]+)">

如果您不关心属性的名称,甚至更通用:

="([^"]+)"

或者......你明白了。