Visual Studio has had support for regular expressions for Find & Replace for several versions, but I've only really used it for simple searches. I recently had a problem where I needed to introduce a set of changes to a very large object model. It occurred to me that this could be greatly simplified with some pattern matching, but I was genuinely surprised to learn that Visual Studio had their own brand of Regular Expressions. After spending some time learning the new syntax I had a really simple expression to modify all of my property setters: Original: public string PropertyName
{
get { return _propertyName; }
set
{
_propertyName = value;
RaisePropertyChanged("PropertyName");
}
}
Goal:
public string PropertyName
{
get { return _propertyName; }
set
{
if ( value == _propertyName )
return;
_propertyName = value;
RaisePropertyChanged("PropertyName");
}
}
Here’s a quick capture and breakdown of the pattern I used.
[Image]Find:
^{:Wh*}<{_:a+} = value;
^ = beginning of line
{ = start of capture group #1
:Wh = Any whitespace character
* = zero or more occurrences
} = end of capture group #1
< = beginning of word
{ = start of capture group #2
_ = I want to the text to start with an underscore
:a = any alpha numerical character
+ = 1 or more alpha numerical characters
} end of capture group #2
“ = value;” = exact text match
Replace:
\1(if (\2 == value)\n\1\t\return;\n\1\2 = value;
The Replace algorithm is fairly straight forward, where “\1” and “\2” represent capture groups 1 and 2. Since capture group #1 represents the leading whitespace, I’m using it in the replace pattern to keep the original padding and to base new lines from that point. For example, “\n\1\t” introduces a newline, the original whitespace and then a new tab.
It’s seems insane that Microsoft implemented their own regular expression engine, but there’s some interesting things in there, such as being able to match on quoted text, etc.
I know this ain’t much, but hopefully it will inspire you to write some nifty expressions. Cheers.
"Visual Studio Regular Expressions for Find & Replace"
No comments yet. -