制御できない形式を使用するファイル用に、Sprache と C# でパーサーを作成しました。それを使用すると、正しく変換できます:
a = "my string";
の中へ
my string
パーサー (引用されたテキストのみ) は現在、次のようになっています。
public static readonly Parser<string> QuotedText =
from open in Parse.Char('"').Token()
from content in Parse.CharExcept('"').Many().Text().Token()
from close in Parse.Char('"').Token()
select content;
ただし、私が使用している形式は、「二重二重」引用符を使用して引用符をエスケープします。
a = "a ""string"".";
これを解析しようとすると、何も返されません。次のように返されます。
a ""string"".
さらに
a = "";
string.Empty
または同様のものに解析する必要があります。
、または次のようなことを行うこのような回答に基づいて、正規表現を試してみましたが失敗しました:"(?:[^;])*"
public static readonly Parser<string> QuotedText =
from content in Parse.Regex("""(?:[^;])*""").Token()
これは機能しません (つまり、上記のケースでは一致が返されません)。私の初心者の正規表現スキルが邪魔になっていると思います。誰にもヒントはありますか?
編集:ここでテストしていました- http://regex101.com/r/eJ9aH1