printf( "\n$_: " ), m[A( [^Z]*|)Z] and print "'$1'" for 'AZ', 'A SOMETHING Z', 'ASOMETHINGZ', 'A Z', 'A Z';; AZ: '' A SOMETHING Z: ' SOMETHING ' ASOMETHINGZ: A Z: ' ' A Z: ' '