È possibile testare un'istruzione QL JPA / EJB con regex?
-
06-07-2019 - |
Domanda
Non sono un esperto di espressioni regolari, quindi ho pensato di buttare via questa domanda. Penso che le espressioni regolari possano aiutare a rendere i miei test più solidi (test delle dichiarazioni QL EJB generate per la generazione corretta).
Ad esempio:
seleziona u.firstName, u.lastName da Users u dove u.age > 50
Quale regex posso usare per dividerlo nel seguente?
- " u.firstName, u.lastName "
- " Utenti u "
- " u.age > 50 "
indipendentemente dal caso delle parole chiave (ovvero SELECT, Select, select, ...) e indipendentemente dai possibili spazi prima e dopo le parole chiave? Naturalmente sarebbe ancora meglio dividerlo ulteriormente, ma se posso dividere le parti come nell'esempio sopra, posso migliorare i miei test.
Grazie in anticipo per eventuali suggerimenti e aiuto.
Soluzione
La regex da dividere sarebbe qualcosa del tipo:
select|from|where
puoi usare lo strumento lanaguage per compilare regex in modo che non sia sensibile al maiuscolo / minuscolo
//Example in java
Pattern.compile("select|from|where",Pattern.CASE_INSENSITIVE).split("select x from y where z)
Altri suggerimenti
La regex più semplice sarebbe qualcosa del tipo:
select(.*?)from(.*?)where(.*)
A seconda della tua lingua dovresti essere in grado di impostare flag per regex in modo che non facciano distinzione tra maiuscole e minuscole. Il risultato saranno 3 gruppi acquisiti che contengono le informazioni richieste (circondate da spazi). Sarebbe più semplice usare trim ()
o una funzione simile nella tua lingua per eliminare gli spazi non segnati piuttosto che rendere regex più complesso.