J'ai essayé d'implémenter la recherche de caractères génériques dans mon application en utilisant certains algorithmes (algorithme k-gram, etc.), mais c'était très complexe.
Jusqu'à ce que je trouve ce code, et il fonctionne parfaitement .. mais je ne sais pas comment il est vérifié et obtenir des résultats!
Code:
public static boolean wildCardMatch(String text, String pattern)
{
return text.matches( pattern.replace("?", ".?").replace("*", ".*?") );
}
Quelqu'un m'aide-t-il à savoir comment cela fonctionne? quelle est l'idée de remplacer la fonction?
Ce dont vous parlez s'appelle le modèle glob .
Dans le monde Java, le modèle glob est plus souvent traduit en modèle regex.
Dans votre scénario, l'implémentation est très basique: la replace
méthode est utilisée pour remplacer toutes les occurrences de ?
dans l'équivalent regex .?
. Ensuite, toutes les occurrences de *
sont remplacées par .*?
.
Donc, si vous avez le modèle global suivant:, abc*.def
l'expression régulière deviendra abc.*?.def
.
Lorsque l'expression régulière est enfin prête, elle est utilisée pour être vérifiée par rapport à la variable text
à l'aide de la méthode matches
. Cette dernière méthode accepte une expression régulière en entrée.
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots