wtd
|
Posted: Sat Nov 13, 2004 9:46 pm Post subject: [Regex-tut] Multiples |
|
|
It's either there or not
In the last tutorial I spoke of alternatives, groups and sets. The last regex used was:
code: | /([hH]ello|[tT]oodles), world/ |
Now, what if I want to either recognize that comma or not? This is a multiples situation. I want either one comma or none. The ? suffix provides this.
code: | /([hH]ello|[tT]oodles),? world/ |
Once, and maybe more... oh, and something else
Now, you'll also notice that I put one space between the greeting/parting and world. What difference does it make to me if someone uses one or more spaces? Maybe they used a tab. It's all the same to me.
The \s entity respresents any whitespace, so a simple rewrite looks like:
code: | /([hH]ello|[tT]oodles),?\sworld/ |
Now, I still have the problem of wanting to match the string even if someone has used more than one space. The + suffix handles this nicely.
code: | /([hH]ello|[tT]oodles),?\s+world/ |
Maybe nobody's home, or maybe there's a party going on
I mentioned in a previous tutorial that ^ and $ are sued to represent the beginning and end of the string. So let's say I want to include those:
code: | /^([hH]ello|[tT]oodles),?\s+world$/ |
Of course, now I can't have anything before the greeting/parting or after world. But that's what I wat, right?
Yes. On the other hand, what do I care if the stuff before or after the expression I'm looking for is just empty space?
I want to look for any number of spaces, and I also want to be able to match no spaces. The * suffix will handle this for me.
code: | /^\s*([hH]ello|[tT]oodles),?\s+world\s*$/ |
|
|
|