私は、[内の<のsomeothertext >](つまり、角括弧、テキスト、左角括弧、テキスト、右角括弧、右角括弧)の文字列をmySQL。このクエリはエラーを受け取っていないが、それは、私はdidnのものを返さmySQLの大括弧付き正規表現
SELECT * FROM message WHERE msgtext REGEXP '\\[(.+)?<(.+)?>\\]'
:もともと私は、次のクエリ(正規表現のクエリは、MySQLで二回エスケープされているので、あなたは通常1を使用する2つのバックスラッシュを使用しなければならないという通知)を使用しました欲しい。 (。+)の代わりに、私は[^ \]](右角括弧を除くすべてにマッチする)を望んでいました。クエリを変更したときに、次のエラーが表示されました。「regexpからの反復演算子オペランドが無効です」
mySQLのマニュアルhereを読んだ後は、開き括弧[。 " "]"の代わりに "^ \]"が必要なので、カッコを開き括弧の後の最初の文字にすることはできないので、これも可能ですか?以下は上記と同じエラーを取得し、私が試してみましたクエリの一部です:
SELECT * FROM message WHERE msgtext REGEXP '\\[([^\\]]+?)<([^\\]]+?)>\\]'
SELECT * FROM message WHERE msgtext REGEXP '\\[[^\\]]+?<[^\\]]+?>\\]'
SELECT * FROM message WHERE msgtext REGEXP '\\[[^[.right-square-bracket.]]]+?<[^[.right-square-bracket.]]]+?>\\]'
はUPDATE:
次のクエリがエラーなしで実行されますが、私は列がある知っているにもかかわらず、任意の行を返しませんこれは、私が(一番上の私の元のクエリに基づく)を探していたものと一致:
SELECT * FROM message WHERE msgtext REGEXP '\\[([^\\]]+)?<([^\\]]+)?>\\]'