MySQLのマニュアルでは、サポートする式についてあまり詳しく説明されていないため、MySQLで次のことが可能かどうかはわかりません。
以下に一致するRLIKEを使用してクエリを作成しようとしています。
タスクは、SQLから、指定された文から少なくとも任意の2つの単語を含むすべての文を取得することです。
たとえば、正規表現で使用する特定の単語がいくつかあります。
hello, dog
データベースに次の文があります。
hello from dog
hello hello cat
dog says hello
dog dog goes away
big bad dog
それらすべてから私は一致したいだけです
hello from dog
dog says hello
今のところ私はこのようにそれを持っています:
SELECT *
FROM test
WHERE
test RLIKE '(hello|dog).*(hello|dog)'
問題は-私はそれらも不要になります
hello hello cat
dog dog goes away
したがって、2番目の直前(hello | dog)に後方参照が必要だと思います。
擬似コードでは、次のようになります。
RLIKE '(hello OR dog) anything can be here (hello OR dog, but not the word which already was in the previous group)'
したがって、次のようになります。
'(hello|dog).*(negative backreference to the 1st group goes here)(hello|dog)'
このような負の後方参照は、MySQL正規表現で実行できますか?または、同じことを行う正規表現を作成するためのより良い方法があるかもしれませんが、クエリがC ++コードによって生成されることを考慮すると、生成するのに複雑すぎないようにする必要がありますか?