Domanda

Ho un elenco di espressioni regolari e vuole tornare le righe con un campo che passa qualsiasi regex. Esiste un modo per qualcosa di simile a quanto segue:

SELECT * FROM Foo as f WHERE f.bar IN ("regex1","regex2");

Non ha l'aspetto di espressioni regolari sono possibili a tutti nel EJBQL quindi immagino che devo utilizzare una query nativa (MySQL).

È stato utile?

Soluzione

Perché non combinare le espressioni regolari in uno?

"(?:" + regex1 + ")|(?:" + regex2 + ")"

Quindi, se regex1 = "^.*foo(.*)bar" e regex2 = "baz(.*)frob$", otterreste

(?:^.*foo(.*)bar)|(?:baz(.*)frob$)

Altri suggerimenti

No, questo non è possibile. Almeno non il modo in cui si pensa che sia.

fare questo, invece: Inserire le regex come righe in una tabella. Poi domanda

SELECT 
  * 
FROM
  Foo AS f
  INNER JOIN Regexes AS re ON f.bar REGEXP re.pattern
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top