文字列リテラルの次の仕様に一致する正規表現を書きたいと思います。この 10 時間、私はさまざまな正規表現を定式化することに夢中になりましたが、どれも機能していないようです。最後に、私はこれに煮詰めました:
([^"]|(\\[.\n]))*\"
基本的に、要件は次のとおりです。
- 文字列リテラルは一致する必要があるため、最後の " まですべてを一致させます。その間に \" がある可能性がありますが、これは文字列を終了するべきではありません。
- 「\」を使用して \n を含むものをエスケープすることもできます。
- エスケープされていない '"' 文字のみが一致を終了できます。
正しく一致させる必要があるいくつかのサンプル文字列は次のとおりです。
- \a\b\"\n" => 次の文字 '\'、'a'、'\'、'b'、'\'、'"'、'\'、'n'、'" に一致する必要があります'
- \"this is still inside the string" => 最後の '"' を含むテキスト全体と一致する必要があります
- 'm about to escape to a newline \'\n'" => この文字列には \n 文字がありますが、文字列は先頭の 'm' から末尾の '"' まですべてに一致する必要があります。
このような正規表現を作成するのを手伝ってください。私の意見では、私が提供した正規表現は仕事をするべきですが、理由もなく失敗しています.