Récupération de texte après une correspondance Regex
Dans votre quête pour utiliser efficacement Regex, vous avez rencontré un défi : extraire du texte selon un modèle correspondant . Examinons la solution.
Votre modèle Regex original, "phrase(.*)", atteint presque votre objectif. Cependant, il capture sans discernement à la fois la chaîne correspondante (« phrase ») et le texte suivant. Pour modifier cela, nous devons introduire un concept connu sous le nom d'« assertion lookbehind ».
Utiliser une assertion lookbehind
Une assertion lookbehind positive (?<=. ..) correspond à une position spécifique dans la chaîne, immédiatement après une expression donnée. Dans ce cas, nous voulons faire correspondre une position juste après la chaîne « phrase » :
(?<=sentence).*
Ce modèle se lit comme suit : « Faire correspondre zéro ou plusieurs caractères après une position où « phrase » la précède immédiatement. » Ainsi, il extrait avec succès le texte souhaité.
Implémentation en Java
Pour implémenter cela en Java, vous pouvez modifier votre code comme suit :
Pattern pattern = Pattern.compile("(?<=sentence).*"); Matcher matcher = pattern.matcher("some lame sentence that is awesome"); boolean found = false; while (matcher.find()) { System.out.println("I found the text: " + matcher.group().toString()); found = true; } if (!found) { System.out.println("I didn't find the text"); }
Maintenant, lorsque l'expression régulière est appliquée à la chaîne d'entrée, elle ne correspondra et n'imprimera que le texte suivant la « phrase » :
I found the text: that is awesome
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!