Ho questa tabellautilizzando Java per la ricerca di dati utilizzando parte della riga nel database di Microsoft Access
e sto usando il seguente codice per recuperare i dati dal mio tavolo che restituisce tutta la le parole inglesi che la sua parola curda contiene بةرز
targetText="بةرز";
try (PreparedStatement ps = conn.prepareStatement(
"SELECT English,Kurdish FROM Info " +
"WHERE Kurdish = ? " +
"OR REGEXP_MATCHES(Kurdish, ?) " +
"OR REGEXP_MATCHES(Kurdish, ?) " +
"OR REGEXP_MATCHES(Kurdish, ?) ")) {
ps.setString(1, targetText);
ps.setString(2, "^[. ]*" + targetText+ "[ ]*[:،,]+[ .]*$");
ps.setString(3, "^[. ]*[:،,]+[ ]*" + targetText+ "[. ]*$");
ps.setString(4, "^[. ]*[:،,]+[ ]*" + targetText+ "[ ]*[:،,]+[ .]*$");
try (ResultSet rSet = ps.executeQuery()) {
while (rSet.next()) {
System.out.println(rSet.getString("English"));
System.out.println(rSet.getString("Kurdish"));
}
}
}
Così funziona benissimo, stampa tutte le parole inglesi che voglio.
Il mio problema è che quando ottengo la parola curda corrispondente non stampa la cella completa. Esso solo stampe بةرز,
Per esempio l'output del codice precedente dovrebbe essere:
aesthete
بةرز ، جوانىثةرست
aether
زوَر ناسك ، بةرز ، ثيروَز ، ئاسمانى
affair
بةرز
ma stampa
aesthete
بةرز
aether
بةرز
affair
بةرز
Che cosa posso fare per ottenere il risultato che voglio?
Nota che sto usando UCanAccess
per la mia connessione al database,
non sono in grado di ricreare il problema utilizzando l'UCanAccess 3.0.2. Ho copiato e incollato i dati di esempio in una tabella di accesso e ho copiato e incollato il codice in un progetto Eclipse. Quando lo eseguo, l'unica riga che corrisponde è "affare". –
vuoi registrare il mio problema con il video e caricarlo su YouTube? –
Cosa dovrebbe fare la tua espressione regolare? Cosa significa '[. ] * [: ,,] + [] * 'significa per te? Per me significa una sequenza di ':', ',', o ',' caratteri opzionalmente preceduti da spazi o punti e/o seguiti da spazi. Combinato con l'ancora '^', significa che non è permesso nessun altro testo, quindi sicuramente non corrisponderà a ciò che precede le prime 2 cerchie rosse. --- Inoltre, poiché i dati mostrati hanno 'Affair' che inizia con la lettera maiuscola e il tuo output ha inizio con la lettera minuscola, non stai * leggendo * quel * dati. – Andreas