2017-12-05 11 views
-1

クエリを使用して、テキストを含む列からユーザーIDを取得しています。これは私が使用しているフォーラムシステム用で、完全なメッセージを含むテキストフィールドからUser id部分を取得したいとします。私が使用していたクエリは今醜いSQLのthats事実を無視していない最後の私はちょうどそれがユーザーIDを読み取ってポイントを取得する必要がMariadb:Regexp_substrが一致しないグループの正規表現で動作しない

SELECT REGEXP_SUBSTR(message, '(?:member:)(\d+)' ) AS user_id from posts where message like '%quote%';

です。次はあなたがメッセージ欄

`QUOTE="Moony, post: 967760, member: 22665"]I'm underwhelmed...[/QUOTE] 

Hopefully we aren’t done yet and this is nothing but a depth signing!` 

に見るであろうテキストの例ですmariadbのREGEXP_SUBSTで使用した場合、正規表現について別の何かありますか?これはPCREで正規表現テスター内で動作し、正しく読み取る必要があります。それは、グループ "メンバー"を探して、その後に数字をとって、すべての投稿に1つのマッチがあるはずです。

+0

私はなぜあなたは、グループ化している以下のいない午前、ポスト内に複数の引用符がある場合には動作しません。ただし、次の"]ための先読みを使用して動作醜いハック/回避策です文字列 'member:'は、キャプチャしていない可能性があります。 –

+0

'(?<= member:)\ d + '' –

+0

@WiktorStribiżew '(?<= member:)\ d +'は同じ結果を返します。あなたの正規表現と私の両方がhttps://regex101.com/でテストすれば動作しますが、一度SQLクエリの中に入れないと動作しません – Dannymh

答えて

0

これは

(?<=member:)\.+(?="])

関連する問題