$ cat splok.pl use strict; use warnings; my @regs = ('(x\d{3,}?)', '(x\d{3,}?x)', '(x\d{3,})', '(x\d{3})', '(x\d{3,}x)', '(x\d{3,}?x?)'); my @strs = ('xx', 'x12x', 'x123456x', 'x12x x123x', 'x123456y'); printf "%-12.12s ", $_ for " ", @regs; print "\n"; for my $str (@strs) { printf "%-12.12s ", $str; for my $reg (@regs) { printf "%-12.12s ", ($str=~$reg) ? $1: '-nope-'; } print "\n"; } $ perl splok.pl (x\d{3,}?) (x\d{3,}?x) (x\d{3,}) (x\d{3}) (x\d{3,}x) (x\d{3,}?x?) xx -nope- -nope- -nope- -nope- -nope- -nope- x12x -nope- -nope- -nope- -nope- -nope- -nope- x123456x x123 x123456x x123456 x123 x123456x x123 x12x x123x x123 x123x x123 x123 x123x x123x x123456y x123 -nope- x123456 x123 -nope- x123