例えば、title: "任意の文字列"
から 任意の文字列
を取り出す方法
ケース1: エスケープされたダブルクオートがない場合
この場合は非常に簡単で、「控えめな量指定子」である .*?
などを使います。
多くの言語にある正規表現で、これが使えます(使えなかったら済みません)。
var text = 'title: "任意の文字列"';
var m = text.match(/"(.*?)"/);
var result = m && m[1];
ケース2: エスケープされたダブルクオートがある場合
これはどういう状況かというと、例えば title: "今日の \"本のタイトル\" の感想"
から 今日の \"本のタイトル\" の感想
を取り出すということです。
この解決方法は 詳説 正規表現 第3版 に載っています。
正規表現 "([^\\"]+|\\.)*"
は、正しいダブルクオートにマッチします。
var text = 'title: "今日の \\"本のタイトル\\" の感想"';
var m = text.match(/"((?:[^\\"]+|\\.)*)"/);
var result = m && m[1];