Je souhaite rechercher plusieurs fichiers via Eclipse pour les 2 lignes suivantes:
@Length(max = L_255)
private String description;
et remplacez-les par ces deux:
@Length(max = L_255, message="{validator.description.len}")
private String description;
La recherche est multiligne par défaut dans Eclipse lorsque vous utilisez l'expression régulière:
(\@Length\(max = L_255)\)([\r\n\s]+private)
Je voudrais ajouter "description de chaîne privée;"
(\@Length\(max = L_255)\)([\r\n\s]+private\s+?String\s+description\s*?;)
remplacé par:
\1, message="{validator.description.len}")\2
Il fonctionne parfaitement dans une recherche de fichiers déclenchée par un CTRL-H.
Comme mentionné dans Tika 's answer , vous pouvez copier directement les deux lignes sélectionnées dans le champ "Containing Text" : ces lignes seront converties en regexp pour vous par Eclipse.
Une autre astuce sur la façon d'obtenir l'expression rationnelle pour un bloc sélectionné. Ouvrez l'un des fichiers contenant les plusieurs lignes (multiligne) à rechercher ou à remplacer. Cliquez sur Ctrl+F et sélectionnez "Expression régulière". Fermez la fenêtre Rechercher/Remplacer. Sélectionnez le bloc dont vous avez besoin et cliquez à nouveau Ctrl+F pour ouvrir la fenêtre Rechercher/Remplacer. Maintenant, dans la zone de texte Rechercher, vous avez l'expression régulière qui correspond exactement à votre bloc de sélection.
(J'ai découvert cela, seulement après avoir créé manuellement une expression rationnelle pour un bloc très long :)
CTRL + H prend deux lignes si vous utilisez l'expression régulière (et vous n'avez pas à écrire l'expression régulière par vous-même, Eclipse le fait pour vous).
Un petit conseil pour inclure plusieurs lignes dans une expression régulière construite manuellement:
Où vous utiliseriez normalement .*
pour faire correspondre n'importe quel caractère zéro ou plusieurs fois, envisagez plutôt d'utiliser quelque chose comme (?:.|\r?\n)*
. Ou mettez un supplément ?
à la fin pour le rendre non gourmand.
Explication : .
ne correspond pas aux nouvelles lignes, il faut donc faire un "soit-ou": les parenthèses correspondent soit au .
avant le tuyau ou la nouvelle ligne après. Le ?
après \r
rend le retour chariot avant le saut de ligne facultatif pour autoriser les nouvelles lignes Windows ou Unix. Le ?:
exclut le tout en tant que groupe de capture (ce qui permet d'éviter un débordement de pile).