in reply to Re^2: Multiline Regex
in thread Multiline Regex

If the regex can match the empty string, the OP has likely other problems than trailing empty lines. If it can't match the empty string, the example code will never fail.

Replies are listed 'Best First'.
Re^4: Multiline Regex
by ikegami (Patriarch) on Oct 09, 2008 at 10:02 UTC

    I don't know to what kind of problems you are referring.

    And for an extra character, I'd use the more versatile code over the code that probably works in this situation.

      I don't know to what kind of problems you are referring.

      Many beginners accidentally write regexes that match the empty string (I've seen several such regexes that should match floating point numbers, for example).

      And for an extra character, I'd use the more versatile code over the code that probably works in this situation.

      Your code might be more versatile, but it's rather non-obvious. It took me perhaps 10 to 15 seconds to figure out what it does, because it relies on two non-obvious features (return of a list of captures in list context and . not matching newline) and has a special case for the end of the string.

      Maybe a good compromise would be to use split m/\n/, $str, -1;, where you can see at first glance what it (roughly) does, and it relies only on one non-obvious behaviour (negative limits suppress trimming of trailing empty list items).

        return of a list of captures in list context [is a non-obvious feature]

        I always use capturing matches in list context unless I'm forced not to by a combo of /g and multiple captures. It's as basic as it gets to me.