in reply to Re: Extraneous behaviour of match variables
in thread Extraneous behaviour of match variables

Thanks, ikegami, for illumination.

A question more. Is better ((?:(?!video).)+) that ((?:(?<!video).)+) ?

  • Comment on Re^2: Extraneous behaviour of match variables

Replies are listed 'Best First'.
Re^3: Extraneous behaviour of match variables
by Fletch (Bishop) on Nov 03, 2006 at 14:30 UTC

    Better might be to use an HTML parser (or something like HTML::LinkExtor) and simplify what you have to look at.

Re^3: Extraneous behaviour of match variables
by ikegami (Patriarch) on Nov 03, 2006 at 15:41 UTC

    (?:(?<!video).)+ is wrong.

    for my $re ( qr/"(?:(?!video).)+"/, qr/"(?:(?<!video).)+"/, qr/"(?:.(?<!video))+"/, ) { print("$re\n"); for ( '"...video..."', '"...video"', '"video..."', '"video"', ) { print("$_: ", /$re/?1:0, "\n"); } }
    (?-xism:"(?:(?!video).)+") "...video...": 0 "...video": 0 "video...": 0 "video": 0 (?-xism:"(?:(?<!video).)+") "...video...": 0 "...video": 1 <----- XXX "video...": 0 "video": 1 <----- XXX (?-xism:"(?:.(?<!video))+") "...video...": 0 "...video": 0 "video...": 0 "video": 0

    (?:(?!video).)+ and (?:.(?<!video))+ should be equivalent. You can do benchmarks to be sure.