Reputation: 8693
I would like to search multiple files via eclipse for the following 2 lines:
@Length(max = L_255)
private String description;
and replace them with these two:
@Length(max = L_255, message="{validator.description.len}")
private String description;
Upvotes: 54
Views: 36599
Reputation: 31
Click Ctrl + F and select "Regular Expression" and then search the lines. In case to perform the same on multiple files, click Ctrl + H, click on 'File Search' and perform the same.
Upvotes: 3
Reputation: 333
CTRL+H does take two lines if you use regexp (and you don't have to write the regexp by yourself, eclipse does that for you).
Upvotes: 20
Reputation: 39394
A quick tip for including multiple lines as part of a manually constructed regular expression:
Where you would normally use .*
to match any character zero or more times, instead consider using something like (?:.|\r?\n)*
. Or put an extra ?
at the end to make it non-greedy.
Explanation: .
doesn't match new lines so need to do an "either-or": The parentheses match either the .
before the pipe or the new line after it. The ?
after \r
makes the carriage return before the line feed optional to allow Windows or Unix new lines. The ?:
excludes the whole thing as a capturing group (which helps to avoid a stack overflow).
Upvotes: 4
Reputation: 1323553
Search are multi-line by default in Eclipse when you are using regex:
(\@Length\(max = L_255)\)([\r\n\s]+private)
I would like to add "private String description;"
(\@Length\(max = L_255)\)([\r\n\s]+private\s+?String\s+description\s*?;)
replaced by:
\1, message="{validator.description.len}")\2
It works perfectly in a File Search triggered by a CTRL-H.
As mentioned in Tika's answer, you can directly copy the two lines selected in the "Containing Text" field: those lines will be converted as a regexp for you by Eclipse.
Upvotes: 44
Reputation: 44084
Select the folder that contains all your files and press Ctrl+H.
Upvotes: 0
Reputation: 671
Another tip on how to get the regex for a selected block. Open one of the files that contains the multiple lines (multiline) to search or replace. Click Ctrl+F and select "Regular expression". Close the Find/Replace window. Select the block you need and click again Ctrl+F to open the Find/Replace window. Now in the Find text box you have the regular expression that exactly matches your selection block.
(I discovered this, only after creating manually a regexp for very long block :)
Upvotes: 67