如果两个逗号之间不存在good单词,找出这样的匹配字符串:
string s = string.Empty;
Regex regex = new Regex(@",(?![\s]*good\b)([\s\S]+?),", RegexOptions.IgnoreCase);
MatchCollection mc = regex.Matches("ss,  good(dd,ee),dd,good(ff,gg)");
foreach (Match m in mc)
{
    s = m.Groups[1].Value;
}
这样可以实现,与good之间是空白的字符串
但是如果字符串是ss,dd good(dd,ee),dd,good(ff,gg)
将正则改变为new Regex(@",(?![\s\S]*good\b)([\s\S]+?),", RegexOptions.IgnoreCase)
怎么找不到匹配的字符串啊还是上面的例子,仅仅是在环视中的匹配样式添加了括号,怎么匹配的是空字符串
Regex regex = new Regex(@",(?!([\s]*good\b))([\s\S]+?),", RegexOptions.IgnoreCase);

解决方案 »

  1.   

    写的有点乱…
    try
    (?<=((?<!\([^)]*),|^)\s*)(?![^,]*?\bgood\b[^,]*?,)((?<o>\()|(?<-o>\))|[^,()]+)+(?(o)(?!))
      

  2.   


    我的要求仅仅是 匹配两个逗号之间不含good的字符串,你这个是得到什么
      

  3.   

    得到内容,分多次捕获
    ss, good(dd,ee),dd,good(ff,gg)
    从你Matches的方法调用,判断你需要的是逗号之间的,但是()中的逗号不算分隔符。我写大概就这意思。
      

  4.   

    得到内容,分多次捕获
    ss, good(dd,ee),dd,good(ff,gg)
    从你Matches的方法调用,判断你需要的是逗号之间的,但是()中的逗号不算分隔符。我写大概就这意思。
      

  5.   


    我要求得到的是:ss, good(dd,ee),dd,good(ff,gg)
      

  6.   

    原来这么简单,我想复杂了。
    (?<=,)(?![^,]*?\bgood\b)[^,]+(?=,)
      

  7.   

                string test = "ss,dd good(dd,ee),dd,good(ff,gg)";
                Regex regex = new Regex(@"(?<=,)((?!good)[^,])+(?=,)");
                MatchCollection mc = regex.Matches(test);
                foreach (Match m in mc)
                {
                    richTextBox2.Text += m.Value + "\n";
                }