Emil
Emil

Reputation: 13789

Eclipse regex find and replace

I want to replace the below statement

ImageIcon("images/calender.gif");

with

ImageIcon(res.getResource("images/calender.gif"));

Can anyone suggest a regex to do this in eclipse.Instead of "calender.gif" any filename can come.

Upvotes: 6

Views: 5712

Answers (2)

polygenelubricants
polygenelubricants

Reputation: 383696

You can find this pattern (in regex mode):

ImageIcon\(("[^"]+")\)

and replace with:

ImageIcon(res.getResource($1))

The \( and \) in the pattern escapes the braces since they are to match literally. The unescaped braces (…) sets up capturing group 1 which matches the doublequoted string literal, which should not have escaped doublequotes (which I believe is illegal for filenames anyway).

The […] is a character class. Something like [aeiou] matches one of any of the lowercase vowels. [^…] is a negated character class. [^aeiou] matches one of anything but the lowercase vowels.

The + is one-or-more repetition, so [^"]+ matches non-empty sequence of everything except double quotes. We simply surround this pattern with " to match the double-quoted string literal.

So the pattern breaks down like this:

      literal(   literal)
         |          |
ImageIcon\(("[^"]+")\)
           \_______/
            group 1

In replacement strings, $1 substitutes what group 1 matched.

References

Upvotes: 11

Karl Johansson
Karl Johansson

Reputation: 1751

Ctrl-F

Find: ImageIcon\("([^\"]*)"\);

Replace with: ImageIcon(res.getResource("\1"));

Check Regular Expressions checkbox.

Upvotes: 0

Related Questions