ShortCut[RegEx]: x-modifier
Independent of your programming experiences, you should have learned that regular expressions are more or less write-only.
Write-only? What is he talking about!? Actually I revisited some Perl code with a relatively short reg-ex. Do you think I was able to understand what I’ve thought when I created that piece of code? Not in the slightest!
But there is a smart modifier, that enables you to comment your regular expressions: x.
With /x
all white-spaces are ignored and with an unescaped #
the rest of the line is treated as a comment. I found a nice example, what do you think is this expression for:
/^1?$|^(11+?)\\1+$/
No idea? Don’t even bother, I’m also stumped… Here is the solution: It’s used to check for prime numbers ;-) Using the x-mod the explanation looks much more readable (via Neil Kandalgaonkar):
/
^1?$ # matches beginning, optional 1, ending.
# thus matches the empty string and "1".
# this matches the cases where N was 0 and 1
# and since it matches, will not flag those as prime.
| # or...
^ # match beginning of string
( # begin first stored group
1 # match a one
1+? # then match one or more ones, minimally.
) # end storing first group
\\1+ # match the first group, repeated one or more times.
$ # match end of string.
/x
So you see, it’s really helpful to use the x-modifier. At least for your own understanding :-P
A bit more explanation can be found on Perl.com.
Leave a comment
There are multiple options to leave a comment: