2017-09-08 5 views
-3

Je cherche un moyen d'ajouter un caractère générique à une chaîne de caractères afin que je puisse rechercher des correspondances approximatives, donc si je recherche dans ma liste de chaînes pour le mot "b * ke" "(où * est le joker), j'obtiendrai {bake, bike, byke, boke} en arrière, est-ce possible en java?Remplacer un caractère dans une chaîne avec une lettre

Répondre

1

Vous recherchez des expressions régulières dont vous avez besoin.

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

final String regex = "b[a-z]{1}ke"; 
final String string = "bake, bike, byke, boke"; 

final Pattern pattern = Pattern.compile(regex); 
final Matcher matcher = pattern.matcher(string); 

while (matcher.find()) { 
    System.out.println("Full match: " + matcher.group(0)); 
    for (int i = 1; i <= matcher.groupCount(); i++) { 
     System.out.println("Group " + i + ": " + matcher.group(i)); 
    } 
} 
+2

j'aurais suggéré l'utilisation de 'b.ke' comme une expression rationnelle, qui semble plus proche de ce que l'OP veut. Ou peut-être 'b [a-z] ke'. – Aaron

+0

oui cela pourrait être utile aussi ... – tanaydin

+0

Aussi, vous ne regroupez rien dans votre regex, donc l'affichage de chaque groupe associé à leur index de groupe semble plutôt inutile. Peut-être que vous vouliez compter les matchs à la place? – Aaron

0

Tout est vrai

System.out.println("bike".matches("b.ke")); 
    System.out.println("bake".matches("b.ke")); 
    System.out.println("b1ke".matches("b.ke")); 

    System.out.println("b123ke".matches("b.+ke")); 
    System.out.println("b[wait_for_it]ke".matches("b.+ke"));