Faire correspondre un texte multiligne à l'aide d'une expression régulière
Lorsque vous essayez de faire correspondre un texte multiligne en Java, vous pouvez rencontrer des différences de comportement entre l'utilisation de la classe Pattern avec le modificateur Pattern.MULTILINE et en utilisant le modificateur (?m).
Pour comprendre l'écart, il est crucial de comprendre le but de ces modificateurs.
Pattern.MULTILINE et (?m)
Pattern.MULTILINE et (?m) sont utilisés pour étendre le comportement des ancres d'expression régulière ( ^ et $) pour correspondre non seulement au début et à la fin de la chaîne entière, mais également au début et à la fin de chaque ligne dans le string.
Pattern.DOTALL et (?s)
Cependant, la principale différence entre ces modificateurs réside dans la gestion des caractères de nouvelle ligne (retour chariot). Pattern.MULTILINE n'étend pas la capacité de correspondance du caractère générique point (.) pour inclure les caractères de nouvelle ligne. Pour les inclure, vous devez utiliser Pattern.DOTALL ou (?s).
Correspondance à l'exemple de chaîne
Dans votre exemple, la chaîne contient plusieurs lignes et vous souhaitez rechercher le texte commençant par « Commentaires de l'utilisateur : ». L'utilisation de Pattern.MULTILINE seule permettra aux ancres de correspondre au début de chaque ligne, mais le caractère point ne correspondra pas aux nouvelles lignes.
Pour faire correspondre correctement le texte multiligne et capturer les caractères après "Commentaires utilisateur :", vous devez utilisez Pattern.DOTALL ou (?s) en conjonction avec Pattern.MULTILINE ou (?m):
Pattern regex = Pattern.compile("^\s*User Comments:\s+(.*)", Pattern.DOTALL); Matcher regexMatcher = regex.matcher(subjectString); if (regexMatcher.find()) { ResultString = regexMatcher.group(1); }
Cette expression régulière correspondra au début de chaque ligne et capturez tous les caractères autres que des espaces après « Commentaires de l'utilisateur : ».
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!