有这个字符串:putlist("abccd");putlist("defdg");
我要抽取取其中的:abccd 和 defdg。
写了个正则表达式:Regex.Matches(s, @"^putlist(.*);$");
但上面的正则表达式匹配了整个串:putlist("abccd");putlist("defdg");
我只要匹配putlist("abccd");的,表达式该如何修改?

解决方案 »

  1.   

    putlist(.?); 问号指定非贪婪模式
      

  2.   

    只好用group模式,然后取第一个。
      

  3.   

    (?<=putlist\(\")[^\"]+(?=\"\))
      

  4.   

    string s = @"putlist(""abccd""); putlist(""defdg"");";
    MatchCollection vMatches = Regex.Matches(s, @"putlist\(([^\)]+)\)\;");
    foreach (Match vMatch in vMatches)
        textBox1.AppendText(vMatch.Result("$1") + "\r\n");
    ------
    "abccd"
    "defdg"
      

  5.   

    可以用反向正声明:(?<=)和正声明:(?=)
    ls的正解
      

  6.   

    h
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  7.   

    string yourStr = ......;
    MatchCollection mc = Regex.Matches(yourStr, "putlist\\(\"(.+?)\"\\)", RegexOptions.IgnoreCase);
    foreach(Match m in mc)
    {
        m.Groups[1].Value;//
    }