●正規表現の使用環境
Perl5 or Javascript

●検索か置換か?
検索

●説明
ダブルクオートに囲まれた文字列を取得したい
ただ、「\」の次の文字はエスケープされた文字として扱う

●対象データ
"hogefuga"
"hoge\"fuga"
"hoge\\"fuga"

●希望する結果
hogefuga
hoge"fuga
hoge\


上記のようなありきたりな命題にトライしていたのですが、以下の正規表現のうち1ではうまくいくのに2ではうまくいきませんでした
1. /"((?:(?:\\.)|[^"])*)"/
2. /"((?:[^"]|(?:\\.))*)"/


ただ、僕にはこれが両方同じ意味に見えるのです

なぜこの場合、2ではうまくいかないのでしょうか
気になって眠れません
詳しい方解説お願いします