Tuesday, 14 February 2012

eclipse regular expressions find replace

Using regular expressions in eclipse to search and replace text in a file, is straight forward and very handy!
All you need to know is that the matched text is going to be available in the replace textbox using the '$' dollar sign.
So to access the first matched element use $1, for the second $2 and so on.

I had an old method with hundreds of lines doing calling a getAttribute("X") and casting the result to a string.

(String)object1.getAttribute("X")
(String)object2.getAttribute("Y")
(String)objectN.getAttribute("Z")

I had to change them all to use a new method that checks if the attribute is null. So the new line would be

getSafeStringAttribute(object1,"X")
getSafeStringAttribute(object2,"Y")
getSafeStringAttribute(objectN,"Z")

With this simple regEx you can do a replace all!

find : \(String\)(.+)\.getAttribute\("(.+)"\)
replace: getSafeStringAttribute($1,"$2")

The first (.+) will match the objectX part while the second will match the attribute name.

The best thing is that when you select some text and type CTRL + F (if the Regular Expressions checkbox is ticked) you string in the find will be already escaped from characters like '(', ')' etc!




No comments: