How to search and replace 2 lines (together) in Eclipse?

后端 未结 5 1966
青春惊慌失措
青春惊慌失措 2020-12-07 22:19

I would like to search multiple files via eclipse for the following 2 lines:

@Length(max = L_255)
private String description;

and replace t

相关标签:
5条回答
  • 2020-12-07 22:45

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

    0 讨论(0)
  • 2020-12-07 22:51

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

    1. Select your lines.
    2. Click CTRL+H. The search dialog opens up. If "Regular expression" is already checked, eclipse will have converted the two lines you search for into regexp for you, click Search. If "Regular expression" if not already checked", check it and click Cancel (eclipse remembers your choise).
    3. Select your lines again.
    4. Click CTRL+H. The search dialog opens up. This time "Regular expression" is already selected. eclipse will have converted the two lines you search for into regexp for you, click Search.
    0 讨论(0)
  • 2020-12-07 22:53

    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.

    Eclipse multi-line search

    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.

    0 讨论(0)
  • 2020-12-07 22:53

    Select the folder that contains all your files and press Ctrl+H.

    0 讨论(0)
  • 2020-12-07 23:02

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

    0 讨论(0)
提交回复
热议问题