logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Regexp::Common::list -- provide regexes for lists

Author

       Damian Conway (damian@conway.org)

Bugs And Irritations

       Bound to be plenty.

       For a start, there are many common regexes missing.  Send them in to regexp-common@abigail.freedom.nl.

Description

       Please consult the manual of Regexp::Common for a general description of the works of this interface.

       Do not use this module directly, but load it via Regexp::Common.

   "$RE{list}{-pat}{-sep}{-lastsep}"
       Returns a pattern matching a list of (at least two) substrings.

       If "-pat=P" is specified, it defines the pattern for each substring in the list. By default, P is
       "qr/.*?\S/". In Regexp::Common 0.02 or earlier, the default pattern was "qr/.*?/". But that will match a
       single space, causing unintended parsing of "a, b, and c" as a list of four elements instead of 3 (with
       "-word" being "(?:and)").  One consequence is that a list of the form "a,,b" will no longer be parsed.
       Use the pattern "qr /.*?/" to be able to parse this, but see the previous remark.

       If "-sep=P" is specified, it defines the pattern P to be used as a separator between each pair of
       substrings in the list, except the final two.  By default P is "qr/\s*,\s*/".

       If "-lastsep=P" is specified, it defines the pattern P to be used as a separator between the final two
       substrings in the list.  By default P is the same as the pattern specified by the "-sep" flag.

       For example:

             $RE{list}{-pat=>'\w+'}                # match a list of word chars
             $RE{list}{-pat=>$RE{num}{real}}       # match a list of numbers
             $RE{list}{-sep=>"\t"}                 # match a tab-separated list
             $RE{list}{-lastsep=>',\s+and\s+'}     # match a proper English list

       Under "-keep":

       $1  captures the entire list

       $2  captures the last separator

   "$RE{list}{conj}{-word=PATTERN}"
       An alias for "$RE{list}{-lastsep=>'\s*,?\s*PATTERN\s*'}"

       If "-word" is not specified, the default pattern is "qr/and|or/".

       For example:

             $RE{list}{conj}{-word=>'et'}        # match Jean, Paul, et Satre
             $RE{list}{conj}{-word=>'oder'}      # match Bonn, Koln oder Hamburg

   "$RE{list}{and}"
       An alias for "$RE{list}{conj}{-word=>'and'}"

   "$RE{list}{or}"
       An alias for "$RE{list}{conj}{-word=>'or'}"

Maintenance

       This package is maintained by Abigail (regexp-common@abigail.freedom.nl).

Name

       Regexp::Common::list -- provide regexes for lists

See Also

       Regexp::Common for a general description of how to use this interface.

Synopsis

           use Regexp::Common qw /list/;

           while (<>) {
               /$RE{list}{-pat => '\w+'}/          and print "List of words";
               /$RE{list}{-pat => $RE{num}{real}}/ and print "List of numbers";
           }

See Also