This outputs:use strict; my $param_rx = '[^),]+'; my $list_start_rx = '\s*\(\s*'; my $list_end_rx = '\s*\)\s*'; my @regexes=( qr/^\s*/, qr/(\S+)/, qr/\s+/, qr/(\S+)/, qr/$list_start_rx/, qr/($param_rx(?:\s*,\s*$param_rx)*)?/, qr/$list_end_rx/, qr/=\s*/, qr/(?:0x)?\d+/, qr/\s*;\s*$/ ); PARSER: while (<DATA>) { foreach my $regex (@regexes) { if ( not /\G$regex/gc ) { print "^<-- Parse failed on line $. at (column " . pos() . " of + " . length($_) . ")\n"; print '"'.substr($_,0,pos())." HERE>>".substr($_,pos(),-1)."\"\n" +; last PARSER; } } } __DATA__ some list (one, two three) = 5; another list (one, two three) = 5; a bad list (one two (three))
^<-- Parse failed on line 3 at (column 5 of 29) "a bad HERE>> list (one two (three))"
In reply to Re: Parsing with regular expressions
by fletcher_the_dog
in thread Parsing with regular expressions
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |