in reply to Two-dimensional match/regex?

This node falls below the community's minimum standard of quality and will not be displayed.

Replies are listed 'Best First'.
Re: Re: Two-dimensional match/regex?
by demerphq (Chancellor) on May 22, 2002 at 13:58 UTC
    Apparently rob_au knows regexes a little better than you think. (A little tip, while XP doesnt mean a whole lot generally when a saint makes an assertion you should take a little care before you disrespect them without being absolutely sure you are right.)

    And since the .+ is greedy, the C will never match.

    Wrong. A regex will backtrack the + until the rest of the pattern matches. If the pattern doesnt contain a C then it will fail. The greedyness would only apply if there were more than one C's contained in the string. It would ignore all but the last.

    Methinks you owe rob_au an apology and that you should reread perlre.

    my @strings=("/^\\\n.....................C", "/^\\\n............C........C", "/^\\\n.....................B", "Foobar"); /(\/\^\\\n.+C)/ && print "---\n\n$1\n---\n\n" foreach @strings; __END__ --- /^\ .....................C --- --- /^\ ............C........C ---

    Yves / DeMerphq
    ---
    Writing a good benchmark isnt as easy as it might look.

Re: Re: Two-dimensional match/regex?
by Anonymous Monk on May 22, 2002 at 12:26 UTC
    my $target = q{ MM oo < -/ /^\ : C : 8===8 |^| ||| -~-~ }; print "Match!\n" if ($target =~ /\/\^\\\n.+C/m);

    ... produces ...

    C:\>test.pl Match!
      Yes, I agree that it matches. But also:
      my $target = q{ MM oo < -/ /^\ : C : 8===8 |^| ||| -~-~ }; print "Match!\n" if ($target =~ /\/\^\\\n.+C/m);
      also produces "Match!", which it shouldn't.

      Also,

      my $target=q { MM oo < - ^ ^ /^\ @ @ : C : ( o ) 8===8 `+' |^| O-X-O ||| / \ -~-~ O O }; print "Match!\n" if ($target =~ /\/\^\\\n.+C/m);
      doesn't match.

      The regex doesn't therefore meet the specification of finding one Ascii picture within a larger picture!

      Cheerio!
      Osfameron
      http://osfameron.perlmonk.org/chickenman/