NAME

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

SYNOPSIS

use Regex::Common qw /list/;

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

DESCRIPTION

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

Do not use this module directly, but load it via Regex::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 Regex::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'}

SEE ALSO

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

AUTHOR

Alceu Rodrigues de Freitas Junior <glasswalk3r@yahoo.com.br>

LICENSE and COPYRIGHT

This software is copyright (c) 2024 of Alceu Rodrigues de Freitas Junior, glasswalk3r at yahoo.com.br

This file is part of regex-common project.

regex-commonis free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

regex-common is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with regex-common. If not, see (http://www.gnu.org/licenses/).

The original project [Regex::Common](https://metacpan.org/pod/Regex::Common) is licensed through the MIT License, copyright (c) Damian Conway (damian@cs.monash.edu.au) and Abigail (regexp-common@abigail.be).