2013-04-08 34 views
0

我想從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(。+)'之類的東西,但是它返回了整個body文本。我在網上找到的其他模式像'/「([^」] * /''任何人都可以更好地理解知道答案的正則表達式,或者另一種方法來做到這一點:)?我很新手。

謝謝!

+0

「東西」鍵總是一樣嗎? – Loamhoof 2013-04-08 09:33:36

回答

0

你可以試試這個:

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

或多個通用:

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

或者更一般的,如果你不關心的屬性的名稱:

="([^"]+)" 

或者...你有這個想法。

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

但我寧願使用專門的HTML解析器,除非它是一個非常快速和骯髒的工作,你想要的。

相關問題