Regardless of what type of data you’re working with or what kind of application you’re creating, you will undoubtedly need to work with strings. No matter how the data is stored, the end user always deals in human-readable text. As such, knowing how to work with strings is part of the essential knowledge that any .NET developer needs to make rich and compelling applications. In addition to showing you how to work with strings in the .NET Framework, this chapter will also introduce you to regular expressions. Also, Jeff Cogswell explains how to use regular expressions to simplify and enhance the power of your programmatic string searching, matching, and replacing.
http://www.perl.org
Congratulations. You have linked to an article that claims to be about regular expressions which has NO discussion of regular expressions in it.
Then you followed it up with an article that supposedly explains regular expressions but only muddies the water by confusing the uninitiated about the difference between naive pattern matching and regular expressions.
Please stop. Informit articles suck.
I don’t know if you expected a whole book of discussion about regular expressions, but these two links (which are actually parts of book chapters) have enough info to get you started.
No. They have enough misinformation to have you confuse pattern replacement patterns with regular expersions.
I’ve seen discussions of regular expressions in fewer words that did a better job and didn’t cause people to confuse them with the ‘*’ and ‘?’ glob patterns.
Nor do these discussions give you enough to get started, as they don’t even cover all of the syntax in the example they gave.
Writing an example that you don’t even explain is lousy exposition. period.
http://www.regular-expressions.info/tutorial.html which is the first hit in google for regular expression tutorial is far better and doesn’t try to confuse people by comparing regexps to something they’re not.
Probably none of you need introductory material to regular expressions, but if you know anyone who does, RegexBuddy, whose tutorial is Cloudy’s cited link, is a great (non-free) package if you are learning the things. Or there is the material in Robbins books on Awk which have very nice compact explanations. Though I found the Aho book on Awk much better to learn Awk itself from.
RE: RegexBuddy
I use The Regex Coach (http://weitz.de/regex-coach/) which is free, or donationware I should say.
If you want a detailed listing of all regular expressions check the “Programming Ruby” book (the standard Ruby reference. Also it is very easy to play with ruby because they have them built in! Sorry if I am a little off topic but I am learning Ruby lately and it is so impressive!
In my operating system, I have a “Grep()” command, but it doesn’t do regular expressions (yet). It does do global find and replaces which is something I haven’t seen implemented elsewhere, for some reason. You can change names of functions and stuff very easily. It has a handy flag “+l” which does a regular expression type thing — checks before and after the match to see if an alphanumeric is present. This allows filtering to just whole labels, not matches in partital labels. In the editor, for example, you can change the name of a variable like “i” without screwing things up. I know you can do this with regular expressions, but it would be a pain.
http://www.losethos.com
IMHO “SQL-like” syntax would be MUCH MORE usefull for regular expressions. Existing syntax is…crap. It’s just like some kind of weird cipher, very hard to use and understand.
IMHO “SQL-like” syntax would be MUCH MORE usefull for regular expressions. Existing syntax is…crap. It’s just like some kind of weird cipher, very hard to use and understand.
If you mean by “SQL-like” the syntax SQL uses for the LIKE clause, that’s exactly the same pattern matching syntax that ‘wildcards’ use, except with ‘?’ replaced by ‘_’ and ‘*’ replaced by ‘%’.
As far as I know, SQL doesn’t have regex matching, although, apparently, most SQL implementations have one non standard form or another. MySQL uses unix regexp syntax, for instance: http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html
while regular expression syntax can be hard to read, it’s actually pretty good for what it does, and no one has ever come up with a better syntax for regular-expression based pattern matching.
I don’t think Cloudy is refering to the “like” clause in SQL.
I think he wants a more human language syntax for regular expressions, rather than using symbols.
E.G.
MATCH WHERE s STARTS WITH ‘dog’ AND ENDS WITH ‘cat’
/^dog.*cat$/
I don’t think Cloudy is refering to the “like” clause in SQL.
I think you mean BlackTiger rather then Cloudy.
I think he wants a more human language syntax for regular expressions, rather than using symbols.
Probably. Such approaches become very wordy very quickly; especially if you’re using the regexp for substitution.
I can’t speak for BlackTiger, but my experience with people having trouble with regexps is that they’ve learned how to use them by stumbling through crappy discussions like the InformIt one that are more confusing than helpful and so don’t have a solid grasp of what regexps are and what they do.
It’s amazing how many people don’t even know that a regexp is a program in a special purpose programming language, for example; or that there are many slightly different variants on regexp syntax.
The Grep whole label thing treats underscore as alphanumeric. Basically, it uses what the compiler recognizes as valid label characters. When it finds a string match it checks the characters before and after to see if they qualify as valid label characters. If either does, it does not process the match because the match is a substring of a larger label.
As much as reference documentation is concise and complete, many people refuse to read it. These people want the same information rewritten in the form of book, so here you have it. This is the new trend in technical documentation: copy/paste the reference docs, put transitional sentences between the sections, and add synthetic code examples that use the functionality.
On the topic, I just find C#’s string functionality to be a little clunky, especially format strings and the StringBuilder class. I’d much rather use IronPython for text processing tasks in .NET.