2010-07-02 5 views
45

Ich möchte mehrere Dateien über Eclipse für die folgenden 2 Zeilen suchen:Wie kann man 2 Zeilen (zusammen) über Eclipse suchen und ersetzen?

@Length(max = L_255) 
private String description; 

und ersetzen Sie sie mit diesen beiden:

@Length(max = L_255, message="{validator.description.len}") 
private String description; 
+1

machte die Zeile als Code um zu zeigen, dass es auf 2 Zeilen ist. STRG + H lässt mich nicht 2 Zeilen für Suche und Ersatz hinzufügen – Sam

Antwort

36

Suche mehrzeiligen standardmäßig in Eclipse sind, wenn Sie regex verwenden:

(\@Length\(max = L_255)\)([\r\n\s]+private) 

Ich mag würde hinzufügen "private String Beschreibung;"

(\@Length\(max = L_255)\)([\r\n\s]+private\s+?String\s+description\s*?;) 

ersetzt durch:

\1, message="{validator.description.len}")\2 

Es liegt ideal in einem Dateisuche funktioniert durch eine CTRL ausgelöst - H.

Eclipse multi-line search

Wie in Tika ‚s answer erwähnt, können Sie die beiden Zeilen in der "Containing Text" Feld ausgewählt direkt kopieren: diese Zeilen als regexp für Sie Eclipse umgewandelt werden.

+0

Ich möchte hinzufügen "private String Beschreibung;" auch als Teil meiner Suche, da die Zeile @Length (max = L_255) auch für andere Felder wie "private String name" vorhanden ist. Also wird der obige Vorschlag nicht funktionieren. – Sam

+0

Ich versuche mehrere aufeinanderfolgende Zeilen zu suchen. – Sam

+1

@Samuel: Bild hinzugefügt, Antwort aktualisiert, um Ihre volle Zeile zu berücksichtigen. Es wird für mehrere aufeinanderfolgende Zeilen arbeiten. Versuche es. – VonC

0

den Ordner auswählen, die Ihre Dateien alle, und drücken Sie enthält Ctrl + H.

+0

nein, STRG + H dauert nicht 2 Zeilen, das ist mein Problem – Sam

+0

Machen Sie die Zeilen getrennt? Oder versuchen Sie einen mehrzeiligen regulären Ausdruck. –

+0

Ich kann es nicht separat machen, da es andere Felder beeinflussen könnte. Ich war nicht in der Lage, den Multiline-Ausdruck herauszufinden, der die obigen 2 Zeilen korrekt identifiziert, daher die Frage. – Sam

49

Ein weiterer Tipp, wie Sie die Regex für einen ausgewählten Block erhalten. Öffnen Sie eine der Dateien, die mehrere Zeilen (mehrzeilig) zum Suchen oder Ersetzen enthalten. Klicken Sie auf Strg + F und wählen Sie "Regulärer Ausdruck". Schließen Sie das Fenster Suchen/Ersetzen. Wählen Sie den benötigten Block aus und klicken Sie erneut auf Strg + F, um das Fenster Suchen/Ersetzen zu öffnen. Nun haben Sie im Textfeld Suchen den regulären Ausdruck, der exakt mit Ihrem Auswahlblock übereinstimmt.

(Ich entdeckte dies erst nach manuell einen regulären Ausdruck für sehr lange Block zu schaffen :)

+0

sehr gut! Danke! +1 –

+0

Ausgezeichneter Tipp! Danke, du hast mir viel Zeit erspart, herauszufinden, wie ich meine Regex aufbauen kann. – Anth0

+1

Sie können diesen Trick verwenden, um den Regex so zu erstellen, dass er auch in eine Dateisuche kopiert wird. Riesige Zeitersparnis, danke! – nerdherd

14

STRG + H dauert zwei Zeilen, wenn Sie regexp verwenden (und Sie haben nicht die regexp selbst zu schreiben, Eclipse macht das für dich).

  1. Wählen Sie Ihre Zeilen aus.
  2. Klicken Sie auf STRG + H. Der Suchdialog öffnet sich. Wenn "Regulärer Ausdruck" bereits aktiviert ist, wird Eclipse die zwei Zeilen, nach denen Sie suchen, in regexp für Sie konvertiert haben, klicken Sie auf Suchen. Wenn „Regulärer Ausdruck“ wenn nicht bereits aktiviert „es überprüfen und klicken Sie auf Abbrechen (Eklipse merkt sich Ihre Wahl).
  3. wieder Ihre Linien wählen.
  4. Klicken Sie auf CTRL + H. Der Suchdialog öffnet. Dieses Mal“ Regular Ausdruck "ist bereits ausgewählt.eclipse hat die zwei Zeilen, nach denen Sie suchen, in regexp für Sie konvertiert, klicken Sie auf Suchen.
+2

Ich mag Ihre Beschreibung der Lösung am besten, einfach und schnell und idiotensicher. Thnx! – Daren

+0

2. Zeile ist versteckte Juwel Funktion .. Thanksss – nick

2

Ein Tipp für mehrere Zeilen als Teil einer manuell erstellten regulären Ausdruck einschließlich:

Wo man normalerweise .* ein beliebiges Zeichen null oder mehrere Male passen verwenden würden, sollten Sie stattdessen so etwas wie (?:.|\r?\n)* verwenden. Oder setzen Sie ein extra ? am Ende, um es nicht gierig zu machen.

Erklärung: . entspricht nicht neue Linien so brauchen ein „entweder-oder“ zu tun: Die Klammern entsprechen entweder den . vor dem Rohr oder der neuen Linie nach. Die ? nach \r macht die Wagenrücklauf vor dem Zeilenvorschub optional, um Windows oder Unix neue Zeilen zu ermöglichen. Die ?: schließt die ganze Sache als eine einfangende Gruppe aus (was hilft, einen Stapelüberlauf zu vermeiden).

+0

Wenn ich dies in Eclipse (4.5) als versuchen: 'Herausgeber (?:. | \ R? \ N) *' Es zeigt einen Fehler im Dialogfeld "Finde Muster zu komplex" Edit: Hinzufügen des Fragezeichens zum Ende als: 'publisher (?:. | \ R? \ N) *?' Macht es funktioniert! Danke für den Tipp und die Regex-Erklärung. – NathanChristie

+1

Es gibt bestimmte Fälle, in denen, wenn ich zu viele Zeichen im zweiten Wort hinzufüge, das ich suchen möchte, ich noch den Fehler "Finde Muster zu komplex" sehe. Also 'publisher (?:. | \ R? \ N) *? Id' funktioniert, aber' publisher (?:. | \ R? \ N) *? Identification' zeigt den Fehler an – NathanChristie