web-dev-qa-db-fra.com

Comment rechercher et remplacer 2 lignes (ensemble) dans Eclipse?

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;
51
Sam

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.

Eclipse multi-line search

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.

40
VonC

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 :)

56
Mario Balaban

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).

  1. Sélectionnez vos lignes.
  2. Cliquez sur CTRL + H. La boîte de dialogue de recherche s'ouvre. Si "Expression régulière" est déjà cochée, Eclipse aura converti les deux lignes que vous recherchez en regexp pour vous, cliquez sur Rechercher. Si "Expression régulière" si elle n'est pas déjà cochée ", cochez-la et cliquez sur Annuler (Eclipse se souvient de votre choix).
  3. Sélectionnez à nouveau vos lignes.
  4. Cliquez sur CTRL + H. La boîte de dialogue de recherche s'ouvre. Cette fois, "Expression régulière" est déjà sélectionnée. Eclipse aura converti les deux lignes que vous recherchez en regexp pour vous, cliquez sur Rechercher.
15
Tika

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).

3
Steve Chambers