Ho una lista di circa 120 mila parole inglesi (in pratica ogni parola nella lingua).Corrispondenza con caratteri jolly espressione regolare
Ho bisogno di un'espressione regolare che consenta la ricerca attraverso queste parole utilizzando caratteri jolly, a.k.a. *
e ?
.
Alcuni esempi:
- se l'utente cerca
m?st*
, sarebbe partita per esempiomaster
omister
omistery
. - se l'utente cerca
*ind
(ogni parola che termina inind
), sarebbe partitawind
obind
oblind
ogrind
.
Ora, la maggior parte degli utenti (soprattutto quelli che non hanno familiarità con le espressioni regolari) sanno che ?
è un sostituto per esattamente 1 carattere, mentre *
è un sostituto per 0, 1 o più caratteri. Voglio assolutamente creare la mia funzione di ricerca basata su questo.
Le mie domande sono: Come posso convertire ciò che l'utente digita (m?st*
ad esempio) in un'espressione regolare?
Ho cercato sul web (ovviamente includendo questo sito) e tutto quello che ho potuto trovare erano tutorial che cercavano di insegnarmi troppo o domande che erano in qualche modo simili, ma non abbastanza da fornire una risposta al mio problema.
Tutto quello che riuscivo a capire era che devo sostituire ?
con .
. Quindi m?st*
diventa m.st*
. Tuttavia, non ho idea di cosa sostituire *
con.
Qualsiasi aiuto sarebbe molto apprezzato. Grazie.
PS: Sono assolutamente nuovo alle espressioni regolari. So quanto possono essere potenti, ma so anche che possono essere molto difficili da imparare. Così ho mai preso il tempo fare per esso ...
possibile duplicato di [Esiste un equivalente di java.util.regex per i modelli di tipo "glob"?] (Http://stackoverflow.com/questions/1247772/is-there-an-equivalent-of-java- util-regex-for-glob-type-patterns) – NPE
Ricorda che tutti i caratteri * altri * regex che potrebbero apparire nella tua query dovranno essere anche sottoposti a escape. Se qualcuno digita '^ \ w..' probabilmente non vuoi passarlo al tuo motore di espressioni regolari nella sua forma originale – Gareth
@Gareth Grazie, lo ricorderò. –