正则表达式仅匹配\“不匹配\\\”

时间:2019-05-09 08:58:21

标签: c# regex

我必须能够将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\";

所以我认为我可以确定';'由于正则表达式中\“和\\”的不同而在字符串内部,但是我无法弄清楚如何匹配\“但不匹配\\”我尝试过:

    "[^\\\\]\"" 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]);
                        }
                    }

0 个答案:

没有答案