J'ai une liste d'environ 120 000 mots anglais (essentiellement chaque mot de la langue).Correspondance générique Expression régulière
J'ai besoin d'une expression régulière qui permette de rechercher à travers ces mots en utilisant des caractères génériques, a.k.a. *
et ?
.
Quelques exemples:
- si les recherches des utilisateurs pour
m?st*
, il correspondraient par exemplemaster
oumister
oumistery
. - si les recherches des utilisateurs pour
*ind
(tout mot se terminant parind
), il correspondraientwind
oubind
oublind
ougrind
.
Maintenant, la plupart des utilisateurs (en particulier ceux qui ne sont pas familiers avec les expressions régulières) savent que ?
est un remplacement pour exactement 1 caractère, alors que *
est un remplacement pour 0, 1 ou plusieurs caractères. Je veux absolument construire ma fonction de recherche basée sur ceci.
Mes questions sont: Comment puis-je convertir ce que l'utilisateur tape (m?st*
par exemple) en une expression régulière? J'ai cherché sur le web (y compris évidemment ce site) et tout ce que j'ai pu trouver, ce sont des tutoriels qui essayaient de m'apprendre trop ou des questions qui étaient assez similaires, mais pas assez pour apporter une réponse à mon propre problème. Tout ce que j'ai pu comprendre, c'est que je dois remplacer ?
par .
. Donc m?st*
devient m.st*
. Cependant, je n'ai aucune idée de quoi remplacer *
avec.
Toute aide serait grandement appréciée. Je vous remercie. PS: Je suis totalement nouveau pour les expressions régulières. Je sais à quel point ils peuvent être puissants, mais je sais aussi qu'ils peuvent être très difficiles à apprendre. Je n'ai donc jamais pris le temps de le faire ...
duplication possible de [Existe-t-il un équivalent de java.util.regex pour les modèles de type "glob"?] (Http://stackoverflow.com/questions/1247772/is-there-an-equivalent-of-java- util-regex-for-glob-type-patterns) – NPE
Gardez à l'esprit que tous les autres caractères regex * qui peuvent apparaître dans votre requête devront également être échappés. Si quelqu'un tape '^ \ w..', vous ne voulez probablement pas passer cela à votre moteur d'expressions régulières dans sa forme brute – Gareth
@Gareth Merci, je m'en souviendrai. –