Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Eclipse regex find and replace

Tags:

regex

eclipse

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.

like image 956
Emil Avatar asked Aug 11 '10 12:08

Emil


Video Answer


1 Answers

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

  • regular-expressions.info
    • Character Class, Repetition, Brackets
    • Examples/Programming Constructs - Strings - has patterns for strings that may contain escaped doublequotes
like image 160
polygenelubricants Avatar answered Sep 25 '22 02:09

polygenelubricants