0

我正在尝试从 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(.+)\"' 之类的东西,但它返回了整个正文。我在网上找到的其他模式,如 '/"([^"]*/"' 什么都不返回有没有其他人对知道答案的正则表达式有更好的理解,或者其他方法可以做到这一点:)?我是个新手。

谢谢!

4

2 回答 2

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

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

于 2013-04-08T09:50:22.017 回答
0

你可以试试这个:

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

或更通用:

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

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

="([^"]+)"

或者......好吧,你明白了。

于 2013-04-08T09:34:55.783 回答