/"[^\\"]*(\\.[^\\"]*)*("|$)//\{"[^\\"]*(("(?!\})|\\.)[^\\"]*)*"\}/m/'[^\\']*(\\.[^\\']*)*('|$)/少し前は文字列リテラルを表す正規表現ってどう書けばいいのかぜんぜん分からなかったんだけれど、今だとぜんぜん普通に書けた。
ところで、文字列リテラル中にダブルクォートが3つ以上入る場合、複数行文字列リテラルを使った方がスクリプトの文字数が短くなる。
mes "\""
mes {"""}
mes "\"\""
mes {""""}
mes "\"\"\""
mes {"""""}
というわけで、たとえ 1 行でもダブルクォートのたくさん入った文字列を使う場合は複数行文字列リテラルを使おう。
文字列リテラル 正規表現でググってみました。
そっか。もう少し短くかけたね。
/"([^\\"]|\\.)*("|$)//\{"([^\\"]|\\.|"(?!\}))*"\}/m/'([^\\']|\\.)*('|$)/
複数行文字列リテラルは /\{"([^\\"]|\\.|")*?"\}/m でもいいか。