示例:string a = "'aa'KKK'bb'HHH'HHHH";
要获取 KKK 和 HHH'HHHH 这些没有被单引号括住的部份,正则表达式要怎么写?

解决方案 »

  1.   

    既然你提到了“正则表达式”,那么我不回答你这个问题了(正则表达式在这类实用中根本不靠谱)。我给你提个醒,在任何文本编码(例如csv)中都会考虑分隔符的转义问题。例如如果单引号括住的部分、其内容包含有单引号的话,可能就要用两个单引号来表示。因此解析程序应该是从语法来设计的,而不是匹配简单的字母。
      

  2.   

    如果不考虑内容中有单引号的问题,大多数简单分隔就是使用split操作就可以。显然你的这个要求,不外乎是在split之后得到的数组,留下下标为偶数的内容,以及最后一个内容。
      

  3.   

    想了一下,可以有个简便的实现:
    string a = "'aa'KKK'bb'HHH'HHHH";
    string[] result=Regex.Split(a,"'[^']+'");
      

  4.   

    我用split操作实现不了,二楼的说用平衡组来解决,如何做?
      

  5.   

     string str = "'aa'KKK'bb'HHH'HHHH";
                var list = Regex.Matches(str, @"(.*?)(?:'[^']+'|$)").OfType<Match>().Select(t => t.Groups[1].Value).Where(T => T != "").ToList();
               
      

  6.   

    这是平衡组: '((?<o>')|(?<-o>)'|[^']+)*(?(o)(?!))'不过我建议你这么做 :
    s=Regex.Replace(s,"'[^']+'","");