字符串:window.baidu.sug({q:"qq",p:true,s:["qq空间","qq个性签名","qq2010正式版下载","qq牧场全能助手","qq网名","qq头像","qq邮箱","qq空间克隆","qq农场外挂","qq表情"]});需要提取的:qq空间、qq个性签名 、qq2010正式版下载等后面的类似字符串写出来之后麻烦解释下意思,我好学习下。

解决方案 »

  1.   


    public void testRegex06()
    {
        string yourStr = @"window.baidu.sug({q:""qq"",p:true,s:[""qq空间"",""qq个性签名"",""qq2010正式版下载"",""qq牧场全能助手"",""qq网名"",""qq头像"",""qq邮箱"",""qq空间克隆"",""qq农场外挂"",""qq表情""]});";
        Match m = Regex.Match(yourStr, @"(?<=s:\[)[^\[\]]+(?=\])");
        if (m.Success)
        {
            MatchCollection mc = Regex.Matches(m.Value, @"(?<m>"")(?<data>[^""]+)(?<-m>"")");
            foreach (Match mi in mc)
            {
                MessageBox.Show(mi.Groups["data"].Value);
            }
        }
    }
      

  2.   

    (?<=(\[")|(,"))\S+?(?=")如果不明白,可以先看看教程:
    http://deerchao.net/tutorials/regex/regex.htmhttp://www.regexlab.com/zh/regref.htm
      

  3.   

    恩,应该是自定义的json吧
    但是我觉得用正则提取需要的内容比较合适。(?<=(\[")|(,"))\S+?(?=")这种正则的确理解不了(?<m>"")(?<data>[^""]+)(?<-m>"")这个基本上之道是什么意思
      

  4.   

    (?<m>"")(?<data>[^""]+)(?<-m>"")
    这个你都看的懂……
    那你正则了解的蛮深入了,自己搞的定才对了。平衡组,是我的软肋。(?<=(\[")|(,"))\S+?(?=")
    意思是:
    [ 或者 ," 开头的
    \S表示非符号的部分,可以用\w表示
    +?非贪婪模式匹配,尽量配合后面表达式成立
    (?=")表示"结尾
      

  5.   

    你可以快速浏览http://deerchao.net/tutorials/regex/regex.htm
    你就懂了
    深入的学习要看客客的blog
      

  6.   

    (?<=(\[")|(,"))\S+?(?=") (?<=exp) 匹配exp后面的位置 此时exp= (\[")|(,")
    (?=exp) 匹配exp前面的位置 
      

  7.   

    (?<=(\[")|(,"))\S+?(?=") (?<=exp) 匹配exp后面的位置 此时exp= (\[")|(,")
    (?=exp) 匹配exp前面的位置 
      

  8.   


    有点头绪了,现在在看楼上给的教程。我就是 (?<=exp) 和 (?=exp) 有点没弄明白。