I don't see the relation between your link and that bit of the regex. However, that said, your skepticism of its utility seems justified. I tried to find a use for it, but I haven't been able to make \d{4,}? act any differently than \d{4}. It's either a useless construct, or a failure of my imagination in coming up with an appropriate test case.
Putting aside what YAPE::Regex::Explain says about it, when I looked at it originally, I thought "Yack! Perl is gonna bitch about that weird '?' character". I could think of a couple other interpretations, so I put together a bit of code to check 'em out:
my @tests = ( 'First case', '123456789second & third case', ); for my $t (@tests) { print "\nchecking '$t'\n"; + if ($t=~/(\d{4,}?)(.*)/) { print "A: $1, $2\n"; } if ($t=~/(\d{4,}?)(.*?)$/) { print "B: $1, $2\n"; } }
The other interpretations I could think of were:
An optional set of 4 or more digits, kind of like (?:\d{4,})?. If true, the first case would give us:
A: , First case'
Exactly 4 digits, like \d{4}, giving us:
checking '123456789second & third case' A: 1234, 56789second & third case B: 1234, 56789second & third case
4 or more digits, with as few as possible, yielding:
checking '123456789second & third case' A: 1234, 56789second & third case B: 123456789, second & third case
On reading the ...explain() output, I thought that I could perhaps make the third case come about. But what I actually got was:
$ perl xxxyyyzzz.pl checking 'First case' checking '123456789second & third case' A: 1234, 56789second & third case B: 1234, 56789second & third case
So I'm thinking that my initial surprise was justified, even though it's syntactically correct.
...roboticus
When your only tool is a hammer, all problems look like your thumb.
In reply to Re^5: why my reg ex matches greedy?
by roboticus
in thread why my reg ex matches greedy?
by lngperl
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |