Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re: lookahead, lookbehind, ... I'm lost

by Roy Johnson (Monsignor)
on May 06, 2009 at 18:13 UTC ( #762349=note: print w/ replies, xml ) Need Help??


in reply to lookahead, lookbehind, ... I'm lost

If you don't mind my whoring my own tutorial (you may have read it), the idiom you're looking for is:

Matching a pattern that doesn't include another pattern

You might want to capture everything between foo and bar that doesn't include baz. The technique is to have the regex engine look-ahead at every character to ensure that it isn't the beginning of the undesired pattern:
/foo # Match starting at foo ( # Capture (?: # Complex expression: (?!baz) # make sure we're not at the beginning of baz . # accept any character )* # any number of times ) # End capture bar # and ending at bar /x;
Note that you have to have the lookahead checked for every character you're accepting. In your case, the [^\n]+ sub-pattern needs to be adjusted to make sure every character is not the beginning of a Lib:
(?: # Complex expression: (?!Lib) # make sure we're not at the beginning of Lib [^\n] # accept any character )+ # any positive number of times

Caution: Contents may have been coded under pressure.


Comment on Re: lookahead, lookbehind, ... I'm lost
Select or Download Code
Re^2: lookahead, lookbehind, ... I'm lost
by ExReg (Sexton) on May 07, 2009 at 16:42 UTC
    Great tutorial! Thanks!

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (8)
As of 2015-07-04 19:09 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 (60 votes), past polls