in reply to Surprising capture of undef with zero repetitions
Here is another way to figure out what a regex means. Yes, I understand that in the context of your question, this wouldn't have been helpful. Eily nailed it. But this is often better than "use re 'debug'". This tip may be useful later.
#!/usr/bin/perl use warnings; use strict; use YAPE::Regex::Explain; my $REx = '/^list\s+(\w+)(?:,(\w+))*$/m'; my $exp = YAPE::Regex::Explain->new($REx)->explain; print $exp; __END__ The regular expression: (?-imsx:/^list\s+(\w+)(?:,(\w+))*$/m) matches as follows: NODE EXPLANATION ---------------------------------------------------------------------- (?-imsx: group, but do not capture (case-sensitive) (with ^ and $ matching normally) (with . not matching \n) (matching whitespace and # normally): ---------------------------------------------------------------------- / '/' ---------------------------------------------------------------------- ^ the beginning of the string ---------------------------------------------------------------------- list 'list' ---------------------------------------------------------------------- \s+ whitespace (\n, \r, \t, \f, and " ") (1 or more times (matching the most amount possible)) ---------------------------------------------------------------------- ( group and capture to \1: ---------------------------------------------------------------------- \w+ word characters (a-z, A-Z, 0-9, _) (1 or more times (matching the most amount possible)) ---------------------------------------------------------------------- ) end of \1 ---------------------------------------------------------------------- (?: group, but do not capture (0 or more times (matching the most amount possible)): ---------------------------------------------------------------------- , ',' ---------------------------------------------------------------------- ( group and capture to \2: ---------------------------------------------------------------------- \w+ word characters (a-z, A-Z, 0-9, _) (1 or more times (matching the most amount possible)) ---------------------------------------------------------------------- ) end of \2 ---------------------------------------------------------------------- )* end of grouping ---------------------------------------------------------------------- $ before an optional \n, and the end of the string ---------------------------------------------------------------------- /m '/m' ---------------------------------------------------------------------- ) end of grouping ---------------------------------------------------------------------- Process completed successfully
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Surprising capture of undef with zero repetitions
by AnomalousMonk (Archbishop) on Jun 22, 2016 at 21:43 UTC |