while () { chomp; print "\nTesting '$_'\n"; /^(?:(?:(\d+)c\s*)|(?:(\d+)w\s*)|(?:(\d+)r\s*))+/i; print "Without \\s* : 1='$1', 2='$2', 3='$3'\n"; /^(?:(?:(\d+)\s*c\s*)|(?:(\d+)\s*w\s*)|(?:(\d+)\s*r\s*))+/i; print "With \\s* : 1='$1', 2='$2', 3='$3'\n"; } #### Testing '1c' Without \s* : 1='1', 2='', 3='' With \s* : 1='1', 2='', 3='' Testing '2w' Without \s* : 1='', 2='2', 3='' With \s* : 1='', 2='2', 3='' Testing '2c3w' Without \s* : 1='2', 2='3', 3='' With \s* : 1='3', 2='3', 3='' Testing '1w1w' Without \s* : 1='', 2='1', 3='' With \s* : 1='1', 2='1', 3='' Testing '1w2r' Without \s* : 1='', 2='1', 3='2' With \s* : 1='2', 2='2', 3='2' Testing '2r1c' Without \s* : 1='1', 2='', 3='2' With \s* : 1='1', 2='', 3='2'