my $string = qw!"This is \"data\""!; #### $string =~ /"((?:\\"|[^"])*)"/; #### $string =~ /" # first quote ( # capture to $1 (?: # non-capturing parens \\" # an escaped quote | # or [^"] # a non-quote )* # end grouping (zero or more of above) ) # end capture "/x; # last quote #### $string =~ /"((?:\\["\\]|[^"])*)"/;