The Dopefly Tech Blog

<< The Dopefly Tech Blog Main page

Use regular expressions to be clever in your IDE

posted under category: General on December 6, 2007 at 5:44 pm by MrNate

Here's something I do almost daily it seems. So much so that I take it for granted. A couple months ago a friend was looking over my shoulder and he exclaimed "What the--? You've got to save that and send it to me!" I explained how it was just throw-away code, and I could send it to him if he wanted. The code is long gone but that reaction stuck in my mind, so let's dive in with an example.

You have a list of values on lines and you want to want to apply some code to each:
first_name
middle_initial
last_name
phone
country
state_province
city


Select the lines, and use your IDE's find/replace tool with the regex option. In Eclipse, this is just CTRL+F and check the checkbox. Use this as the search pattern:
^(.+)$

This regex says to select any line with at least one character in it and store it in a character group.

Some code like this would be the replace pattern:
querySetCell(myQuery, "$1", "");

Replace them all and your code will be generated in an instant. The regex will drop each line's content into the $1 backreference.

There are dozens of other types of uses just like this one.

Post A Comment!
On Dec 6, 2007 at 5:42 PM James Moberg (james at the endearing ssmedia.com) said:
Sometimes I'm using a weak text editor that doesn't have good search-and-replace features... I've managed to write a bunch of macros using AutoHotKey so that they work anywhere regardless of the program I'm using and can be easily synched with my portable USB stick.
http://www.autohotkey.com/

For example, I've got:
- lowercase, uppercase, titlecase, lower quotecase and extended character replacement hotkeys
- a hotkey to clean up nasty CSS
- lost of stored snippets
- program launcher shortcuts

I was using Microsoft Access for a project and had to do some manual clean up and delete individual rows. It was really slowing me down to have to interact with the "Are you sure" dialog box, so I wrote the following script that does it all automatically for me when I press CTRL-SHIFT-X only while using Access:

^+X::
WinGetActiveTitle, Title
IfInString, Title, Access
{
Send,{delete}
Send,{enter}
Return
}
Return

I had another situation where I copied a column of records from Access/Excel and had to turn it into a comma-delimited list. I was pasting data into my text editor, replacing all carriage returns with commas and then deleting the first list item if it was "ID". I rewrote this into a macro using WINDOWSKEY+V:

#v::
StringReplace,clipboard,clipboard,`n,`,,All
StringReplace,clipboard,clipboard,`r,,All
StringGetPos, pos, clipboard, ID`,
if pos = 0
StringRight, clipboard, clipboard, StrLen(clipboard)-3
Send,^v
Return

Again, AutoHotKey works with any program and is a great time saver.

On Dec 6, 2007 at 7:13 PM Max Hamby (mhamby at the ever popular jigsawsol.com) said:
Nice one, Nathan! I wish I'd have seen this post 2 days ago... would have saved me a lot of time.

How about sharing more of the "dozens"?

On Dec 6, 2007 at 7:33 PM Justin Carter (justin.w.carter has underestimated gmail.com) said:
Nice tip, thanks! I'm surprised that after all these years this is the first thing I've ever read about doing a regex find/replace in an IDE! :)

On Dec 6, 2007 at 9:17 PM Nathan Strutz (http://www.dopefly.com/) said:
James,
great tip, thanks!

Max,
How about I'll post more when I come across them. I remember a few times I've used it to suck out columns from pasted spreadsheet data and CSV files, and to find certain types of method calls with arguments not in a list of preset known arguments, and to remove whitespace, line breaks, etc.

Be creative and share what you find :)

On Dec 6, 2007 at 9:28 PM Max Hamby (mhamby who can't believe it's not jigsawsol.com) said:
I've used regex to scrub client data (always a nightmare!) and reformat some lists but had never thought to use it for actually producing code.

Hmmmm, got me thinking over here....

On Dec 7, 2007 at 11:02 AM Adam (www.dustypixels.com) said:
Wow, quite amazed more people don't use this as second nature already. I'm no regex pro but just some basic skills can save you tons of typing. The 'Pragmatic Programmer' book describes regex as one of the basic skills every coder should have in their toolbox.

On Dec 7, 2007 at 12:24 PM James Moberg (james whose domain rhymes with ssmedia.com) said:
If you want to use this same regular expression as a hotkey that can be used in any application (even ones that don't support basic search-and-replace), here's the AutoHotKey equivalent that you can always have handy.
http://www.autohotkey.com/

It will take your clipboard and perform the search-and-replace. I have a lot of these shortcuts and it's great being able to use them with any program.

#q:: ; Windows Key + Q
clipboard := RegExReplace(clipboard, "(.+)", "querySetCell(myQuery, ""$1"", """");")
Send,^v
Return

On Dec 7, 2007 at 3:59 PM David Buhler (DavidBuhler sends love to gmail.com) said:
Any thoughts on a similar topic would be greatly appreciated!

http://www.coldfusionjedi.com/index.cfm/2007/10/11/ColdFusion-Code-Beautifiers

On Dec 7, 2007 at 5:09 PM James Moberg (james at the ever-endearing ssmedia.com) said:
Valid HTML and javascript can be easily beautified and condensed because whitespace is not an issue. (Invalid HTML and javascript can have problems when condensed and IE sometimes chokes on extra spaces.)

I personally refrain attempting to beautify all CFML code and prefer to have occassional optimized blocks or blocks that need the protected whitespace (like CFMail and text messages).
Post A Comment!