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 に答える