Регулярное выражение, чтобы соответствовать только \ "не \\\" - PullRequest
1 голос
/ 09 мая 2019

Я должен иметь возможность разбить прочитанную строку кода с помощью File.ReadLines () на ';' когда я получил что-то подобное в исходном коде (две или более строк кода в одной строке):

    string firstString = "xyzxyz"; string secodnString = "zyxzyx";

проблема в том, что внутри этих строк может быть другая; или даже ", а затем эта строка:

    string firstString = "xyz;xyz\"inside quote\""; string secondString = 
    "zyx;zyx";

прочитано выглядит так:

    "string firstString = \"xyz;xyz\\\"inside quote\\\"\"; string secondString 
    = \"zyx;zyx\";

Итак, я решил, что смогу определить, '' ' находится внутри строки из-за разницы в \ "и \\" по Regex, но я не могу понять, как соответствовать \ ", но не соответствует \\", я пытался:

    "[^\\\\]\"" or "[^\\]\""

но это не работает. Спасибо в andvace.

РЕДАКТИРОВАТЬ, моя единственная проблема - регулярное выражение, остальное я уже написал так:

List<string> vrlSplitedLine = vrlLines[i].Trim().Split(';').ToList();
                    List<string> vrlFinallSplitedLine = new List<string>();
                    string vrlReatachedString = string.Empty;
                    for(int j = 0; j < vrlSplitedLine.Count; j++)
                    {
                        if(Regex.Matches(vrlSplitedLine[j], "[^\\\\]\"").Count % 2 != 0)
                        {
                            vrlReatachedString = vrlSplitedLine[j];
                            int k = j;
                            do
                            {
                                k++;
                                vrlReatachedString = vrlReatachedString + ';' + vrlSplitedLine[k];
                            }
                            while (Regex.Matches(vrlSplitedLine[k], "[^\\\\]\"").Count % 2 == 0);
                            vrlFinallSplitedLine.Add(vrlReatachedString);
                            j = k;
                        }
                        else
                        {
                            vrlFinallSplitedLine.Add(vrlSplitedLine[j]);
                        }
                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...