Apparently rob_au knows regexes a little better than you think. (A little tip, while XP doesnt mean a whole lot generally when a saint makes an assertion you should take a little care before you disrespect them without being absolutely sure you are right.)
And since the .+ is greedy, the C will never match.
Wrong. A regex will backtrack the + until the rest of the pattern matches. If the pattern doesnt contain a C then it will fail. The greedyness would only apply if there were more than one C's contained in the string. It would ignore all but the last.
Methinks you owe rob_au an apology and that you should reread perlre.
my @strings=("/^\\\n.....................C",
"/^\\\n............C........C",
"/^\\\n.....................B",
"Foobar");
/(\/\^\\\n.+C)/ && print "---\n\n$1\n---\n\n" foreach @strings;
__END__
---
/^\
.....................C
---
---
/^\
............C........C
---
Yves / DeMerphq
---
Writing a good benchmark isnt as easy as it might look. |