Maison >Java >javaDidacticiel >Comment puis-je faire correspondre efficacement du texte multiligne à l'aide d'expressions régulières en Java ?

Comment puis-je faire correspondre efficacement du texte multiligne à l'aide d'expressions régulières en Java ?

DDD
DDDoriginal
2024-12-27 08:20:11329parcourir

How Can I Effectively Match Multiline Text Using Regular Expressions in Java?

Utilisation d'expressions régulières pour la correspondance de texte multiligne

Lorsque vous essayez de faire correspondre du texte multiligne avec des expressions régulières en Java, certaines considérations entrent en jeu. Le modificateur Pattern.MULTILINE et le raccourci (?m) peuvent apparemment présenter des résultats inattendus.

Pour comprendre le comportement, il est essentiel de clarifier le but des modificateurs. Pattern.MULTILINE (?m) permet aux ancres ^ (début de ligne) et $ (fin de ligne) de correspondre au début et à la fin de chaque ligne plutôt qu'aux limites de la chaîne. D'un autre côté, Pattern.DOTALL (?s) permet au caractère point de correspondre aux sauts de ligne.

Dans votre exemple, le modèle (?m) échoue lorsqu'il est utilisé avec String.matches car matches() nécessite le regex pour correspondre à la chaîne entière. Puisque votre regex (W)(S) ne correspond qu'à une partie de la chaîne, la comparaison donne faux.

Pour trouver une chaîne qui commence par « Commentaires utilisateur : », une expression régulière qui convient mieux à la tâche est :

^\s*User Comments:\s*(.*)

Cette expression régulière utilise Pattern.DOTALL pour permettre au point de correspondre aux sauts de ligne, et elle capture le texte suivant "Commentaires utilisateur :" dans le premier groupe de capture.

En utilisant le modificateur DOTALL et en tirant parti de la méthode de correspondance correcte (find() ou matches()), vous pouvez faire correspondre efficacement du texte multiligne à l'aide d'expressions régulières en Java.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn