use strict; my $single_quote_re = qr{ ' (?: (?> [^\\']+ ) | \\ . )* ' }sx; # Normal String my $line = qq{Test #1 'Show me Waynes world','Jennys Basketball shoes'\n}; print $line; $line =~ s/$single_quote_re/SSS/g; print $line; # Escaped single quotes embedded $line = qq{Test #2 'Show me Wayne\\'s world','Jenny\\'s Basketball shoes'\n}; print $line; $line =~ s/$single_quote_re/SSS/g; print $line; # Literal backslash before closing single quote $line = qq{Test #2 'Show me Waynes world\\\\','Jenny\\'s Basketball shoes'\n}; print $line; $line =~ s/$single_quote_re/SSS/g; print $line; __END__