Keep It Simple, Stupid | |
PerlMonks |
Re^3: My regex works, but I want to make sure it's not blind luckby haukex (Archbishop) |
on Dec 22, 2020 at 08:08 UTC ( [id://11125604]=note: print w/replies, xml ) | Need Help?? |
Is there a way to tell regex to work from right to left? No. One of the basic principles of the regex engine is that it works from left to right (GrandFather's suggestion of reverseing the string is a workaround/hack, though I personally have never seen anyone actually do this in production). Another basic principle is that the engine will stop at the first successful match, which sometimes leads to confusion when, for example, people expect .* to match more than "" (though in your example in the root node you're using the ^ $ anchors to help with that). Combine this with the idea of backtracking (Update: which of course does work from right to left, but too much backtracking can be very inefficient) and hopefully this will lead to a better understanding :-) I very much recommend a read of perlretut, and if you want to see your regex in action, then install Regexp::Debugger and run e.g. perl -MRegexp::Debugger -e '"foo.bar" =~ /^.*(\..*)$/'
In Section
Seekers of Perl Wisdom
|
|