I can honestly say that I really don't like intellisense, but the addition of intellisense with the Regulator application is probably pretty powerful for a large number of users. I started playing with the beta, and figured I'd load up some patterns that I've been playing with. As I started typing my patterns in, I kept getting an intellisense popup. When I continue typing, my last typed character often gets replaced. A good example would be creating a digit match:
\d
Once you type that in you'll get the intellisense popup. However, try and type another digit escape sequence, and you'll find your d has been replaced by the next \ character. Not fun my friend, not fun at all.
Nice little tool though I must say. It definitely has the ability to make my life a bit easier. I had read some posts on making enhancements to the tool. Some enhancements I'd like to see include plug-ins for generating test input to the expressions. Right now you can load tests from files and that is pretty nice, but I'd like something that models your expression and tries to make edge case input, that would be really nice. More cool features might include automatically generating expressions that match a large input such as a web page. Hopefully some of Darren's work on the HTML parser might help here.
A little jewel I plan on developing is the performant compiled expression. This won't exist for every expression, but for many types of expression you can hard-code in certain assumptions that make processing much more performant. In addtion, you can create strongly typed processing classes that return real results rather than simply captured expanses of string. Take the following:
(?<ID>\d\d\d\d)
The above could easily be translated and parsed as an integer and placed within a field or property on a capture structure. And this time, not a generic name/value structure like that used in the current .NET expressions. The added amount of time consumed to strongly type the value will be more than made up for in terms of time used to access the items later. In addition, you can compile with optimizations for specific use cases. If the expression is for validation (IsMatch), then there is no reason to store captures and groups or even listen to hints about creating named capture groups, ordinal groups, etc... This can be very powerful in server environments where validation should occur without the memory overhead of object allocations. Other optimizations can also be performed making the use of regular expressions more like a scalpel than a blunt axe.