I would like to search multiple files via eclipse for the following 2 lines:
@Length(max = L_255)
private String description;
and replace t
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 :)
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).
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.
Select the folder that contains all your files and press Ctrl+H.
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).