2017-10-21 90 views
-1

J'ai un fichier avec les noms écrits dans chaque ligne comme celui-ci: Subhash Chand (saut de ligne) yobie chimwanachomama (saut de ligne) riadh chaieb (saut de ligne)tokenizer de longueur n créée en utilisant regexp

maintenant si je lance une recherche sur regexp pour [az] [az], elle renvoie "su bh comme ch an yo ...". Existe-t-il un motif regexp qui retournerait les correspondances de cette forme "" su ub ha comme sh ch ha an nd ... "? Cette regexp fonctionne comme tokenizer de longueur '2.' Ce serait génial si regexp est un Java valide . regexp

Répondre

1

Essayez cette regex:

(?=([a-zA-Z]{2})) 

cela regarder vers l'avenir dans la chaîne et correspondre à une chaîne vide si la chaîne après qu'elle correspond [a-zA-Z]{2} et il met les 2 caractères après dans un groupe depuis. le moteur vérifiera chaque index, cela vous retournera le résultat escompté

Vous avez juste besoin d'obtenir tous les g roup1s des matchs

final String regex = "(?=([a-zA-Z]{2}))"; 
final String string = "subhash chand\n" 
     + "yobie chimwanachomama\n" 
     + "riadh chaieb"; 

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

while (matcher.find()) { 
    System.out.println(matcher.group(1)); 

} 

Try it here!

+0

Bonjour, il est de retour la sortie "su bh comme ch an yo bi ch wa im na ch om am ri ad ch ai eb", la puissance requise est « su ub bh ha comme sh ch ha an nd ... " –

+0

Pourquoi ne correspond-il pas' bh'? @AshishJain – Sweeper

+0

Oui, pardonnez l'erreur, le résultat requis est chaque jeton de longueur continue de deux caractères: "su ub bh ha comme sh ch ha an nd" –