It's funny.  I agree with both statements, sort of.  (Do you smell an  
essay coming on?  You should...  

 )
Fundamentally, I think that Regex is a good thing.  It's a concise,  
reliable way to represent various string interpretations and  
manipulations.  As far as performance goes, I don't think there's a  
reliable way to say that Regex is always better- or worse-performing than  
an equivalent explicit algorithm.
However, I do think that it's likely that Regex performs better for at  
least a broad variety of possible applications, if not the majority.  Asa  
framework class, it's got the potential to be well-optimized and there's  
good justification for it to be.  On the other hand, explicit algorithms 
may or may not be well-optimized, depending on who wrote the code and how  
often it's likely to be used.
In addition, every time you write an explicit algorithm, you risk writing  
it wrong.  With Regex, yes there's the possibility of writing an incorrect  
expression, but it's more likely in that case that it just won't work.  
It's much harder to get those subtle "happens once in awhile with only  
this very specific input".  Not impossible, but IMHO more difficult.
So those are all things in favor of Regex.  I think that in general,  
anything that allows you to specify an operation in a concise, error-free  
way and then perform that operation with reasonable, or even optimal  
speed, that's a good thing.
But with Regex, the conciseness is IMHO a bit overboard.  I recognize that  
there are folks out there who have used regular expressions so much that  
it's just like writing regular programming code to them.  They know it  
inside and out.
But for the rest of us, using Regex is an exercise in frustration as we  
skip back and forth in the MSDN documentation trying to find just the  
right syntax for representing some goal.  There's an incredible amount of  
capability there, and with that comes a fairly extensive grammar that  
needs to be learned to use it effectively.  But the syntax of that grammar  
is pretty arcane IMHO, and has been very hard to learn, at least for me.
I wish we had something like Regex, but with a more natural-language-like  
way to program it.  Maybe something like a RegexBuilder class or something  
that you can use to construct an appropriate regular expression.  Or maybe  
just a syntax that looks more like C# than like APL.  Or maybe something 
that takes actual C# code expressions and converts it into a suitable  
regular expression.  Or some alternative I've yet to consider.
I don't know what the actual solution is.  All I know is that Regex itself  
can be very trying to use if you're inexperienced with it, to a _much_  
greater extent than, say, VB or C# might be.  So in the end, for simple  
operations I find myself thinking "well, some explicit C# code will be  
clearer, and it should be easy to make it bug-free", and so I wind up not  
using Regex there.  And then for more complex operations, where the  
conciseness and precision of Regex would be a benefit, I find myself  
thinking "I just don't get how to do this in Regex and the docs aren't  
helping me figure it out", and so I wind up not using Regex.
Which means that either way, I don't use Regex.  I've posted questions  
here asking how to write Regex expressions to do what I want, and to the  
credit of the newsgroup experts who do know Regex, they've always come  
through.  For me, and for others who ask similar questions.  Jesse Houwing  
in particular deserves major kudos for his Regex "kung fu" and his  
willingness to share it with others.  But in the end, if I can't be  
self-reliant on a technology, I tend not to use it.
Maybe if I had greater need to doing string pattern matching, I'd take the 
time and really learn regular expressions and then it'd be useful.  But I  
don't, and for the occasional moments when it'd be useful to me, it's just 
not worth the time and effort to figure out that specific case.
I'd love to see someone fix that problem.  
 
Pete