Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
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 scrutinizing the Monastery: (7)
As of 2015-07-06 06:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (70 votes), past polls