私はRegexesのリストを持っており、それらの行を正規表現を渡すフィールドで返したいと思っています。とにかく、次のようなものまであります:EJBQL/MySQL RegexesとIN
SELECT * FROM Foo as f WHERE f.bar IN ("regex1","regex2");
それは正規表現のようには見えませんがEJBQLにまったくので、私は、私はネイティブ(MySQLの)クエリを使用する必要が推測している可能性があります。
私はRegexesのリストを持っており、それらの行を正規表現を渡すフィールドで返したいと思っています。とにかく、次のようなものまであります:EJBQL/MySQL RegexesとIN
SELECT * FROM Foo as f WHERE f.bar IN ("regex1","regex2");
それは正規表現のようには見えませんがEJBQLにまったくので、私は、私はネイティブ(MySQLの)クエリを使用する必要が推測している可能性があります。
正規表現を1つに結合してみませんか?
"(?:" + regex1 + ")|(?:" + regex2 + ")"
のでregex1 = "^.*foo(.*)bar"
とregex2 = "baz(.*)frob$"
場合、あなたは
(?:^.*foo(.*)bar)|(?:baz(.*)frob$)
いいえ、これはできません。少なくとも、それはあなたの考え方ではありません。
代わりにこれを実行します。行に正規表現をテーブルに挿入します。その後、クエリ
SELECT
*
FROM
Foo AS f
INNER JOIN Regexes AS re ON f.bar REGEXP re.pattern
1を取得したい - funnily、私は私のバージョン:) –
@Timよりも、このあまり複雑で見つける:うーん...それは、余分なテーブルを必要とし、クエリを開始する前に行を挿入します。連結された単一の正規表現を使うと、ハウスキーピングが少なくて済みます。 – Tomalak
+1それはまた良いアイデアです。私のアプローチよりも複雑さが少なく、おそらく高速です。 – Tomalak