Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re^4: Help combining two regex's into one

by AnomalousMonk (Abbot)
on Jan 16, 2013 at 04:19 UTC ( #1013495=note: print w/ replies, xml ) Need Help??


in reply to Re^3: Help combining two regex's into one
in thread Help combining two regex's into one

From perlre, identical in both Strawberry 5.14.2.1 local docs and 5.16.2 on-line docs (emphases added):

  • \K     [6]   Keep the stuff left of the \K, don't include it in $&
    (Note [6] simply refers to the discussion in the "Look-Around Assertions" section.)
  • From "Look-Around Assertions":
    There is a special form of this construct, called "\K", which causes the regex engine to "keep" everything it had matched prior to the "\K" and not include it in $&.

Hmmm...   I suppose when I read these sections heretofore, my attention was drawn to the "don't include..." clauses and I more or less ignored the "left of" and "prior to" statements. My naive association of "keep" is with inclusion: in this specific instance, everything to the right of  \K is (or could be) included in $&. The docs seem to be using "keep" in the sense of "keep back", i.e., "to exclude": everything to the left of  \K is "kept back" from inclusion in $&. Perhaps they are discussing the behavior  \K in the context of substitution: everything left of the  \K is not included in $& and so cannot be zapped by substitution: it is "kept safe" from substitution. But  \K is equally valid and useful in both  m// matching and  s/// substitution, so...

I can't say I would agree with the perhaps subtle interpretation given to "keep" in the documentation, but it is fully clarified by the "don't include" language and by the examples, so I doubt this qualifies as a doc-bug.

Update: LanX: Almost as confusing like using single line and multi line modifier at the same time... ++That!


Comment on Re^4: Help combining two regex's into one
Select or Download Code
Re^5: Help combining two regex's into one
by Kenosis (Priest) on Jan 16, 2013 at 04:38 UTC

    ...everything left of the \K is not included in $& and so cannot be zapped by substitution: it is "kept safe" from substitution.

    Well said...

    Given this, I might read perlre as "Keep the stuff left of the \K, i.e., don't include it in $&". Put another way, if the stuff left of \K were included in $&, it wouldn't be kept--and I believe this is the essence of your quote above.

    Got a great laugh from your Update! Thanks for that...

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1013495]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (4)
As of 2014-09-23 23:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (241 votes), past polls