<meta\s+(name=\s*[\"\']?keywords[\"\']?\s+content=\s*[\"\']?[^>]+[\"\']?\s*>)|(<meta\s+content=\s*[\"\']?[^>]+[\"\']? name=\s*[\"\']?keywords[\"\']?\s*)[\/]?\s?>上面这个正则表达式可以匹配下面这段字符
------------------------
<META content=".net,正则表达式,使用,反向引用" name="Keywords" />
------------------------现在我需要获取到content的内容,我应该怎么改这个正则了,类似于下面这个调用 Regex searchTitle = new Regex("<b>(?<b>[\\s\\S]*?)<\\/b>", RegexOptions.IgnoreCase);
 if (oM.Success)
        {
            Response.Write(oM.Groups["b"].Value.Trim());
        }

解决方案 »

  1.   

    <META content=".net,正则表达式,使用,反向引用" name="Keywords" />
    把<META content=" 和" name="Keywords" />替换成空 就可以得到content了
      

  2.   

    <meta\s+(name=\s*[\"\']?keywords[\"\']?\s+content=\s*[\"\']?[^>]+[\"\']?\s*>) ¦( <meta\s+content=\s*[\"\']?[^>]+[\"\']? name=\s*[\"\']?keywords[\"\']?\s*)[\/]?\s?> 这个能匹配到吗?你这个都是错误的,你说你自己要什么效果,我们帮你想正则式
      

  3.   

    <meta\s+(name=\s*[\"\']?keywords[\"\']?\s+content=\s*[\"\']?<ContentGroupName>(?[^>]+)[\"\']?\s*>) ¦( <meta\s+content=\s*[\"\']?<ContentGroupName>(?[^>]+)[\"\']? name=\s*[\"\']?keywords[\"\']?\s*)[\/]?\s?>Groups["ContentGroupName"].value就可以得到content 的内容了
      

  4.   

    正在分析“<meta\s+(name=\s*["']?keywords["']?\s+content=\s*["']?<ContentGroupName>(?[^>]+)["']?\s*>)|(<meta\s+content=\s*["']?<ContentGroupName>(?[^>]+)["']? name=\s*["']?keywords["']?\s*)[\/]?\s?>”- 无法识别的分组构造。报错了, 要求很简单,就是匹配meta的content值就可以了.
      

  5.   


    string str="<META content=\".net,正则表达式,使用,反向引用\" name=\"Keywords\" /> ";
    System.Text.RegularExpressions.Regex  reg=new  System.Text.RegularExpressions.Regex(@"<meta\s+.*?content=(['""]?)(?<content>[^""'>]*)(\1)\s+.*?>",System.Text.RegularExpressions.RegexOptions.IgnoreCase);  
    System.Text.RegularExpressions.MatchCollection m = reg.Matches(str); //设定要查找的字符串
    for (int i = 0; i < m.Count; i++)
    {
       Response.Write(m[i].Groups["content"].ToString()+"<br>");
    }
      

  6.   

    还要加个条件,是keywords的,不是所有的content
      

  7.   

    正则改进下:System.Text.RegularExpressions.Regex  reg=new  System.Text.RegularExpressions.Regex(@"<meta\s+.*?content=(['""]?)(?<content>[^""'>]*)(\1)\s+name=(['""]?)Keywords(\3)\s.*?>",System.Text.RegularExpressions.RegexOptions.IgnoreCase);  
      

  8.   

    <meta\s+(name=\s*[\"\']?keywords[\"\']?\s+content=\s*[\"\']?[^>]+[\"\']?\s*>) ¦( <meta\s+content=\s*[\"\']?[^>]+[\"\']? name=\s*[\"\']?keywords[\"\']?\s*)[\/]?\s?> wangkun9999 的已经OK了,不过只考虑了一种情况,你看我贴的正则,meta有几种情况,content可能放前面也可能放后面,所以才加了一个|,能不能再帮忙改进一下,感激不尽.
      

  9.   


    string str="<html>asfsad<META content=\".net,正则表达式,使用,反向引用\" name=\"Keywords\" /> asfasfas<META  name=\"Keywords\"  content=\"测试第二种情况\" />";
    System.Text.RegularExpressions.Regex  reg=new  System.Text.RegularExpressions.Regex(@"<meta(\s+content=(['""]?)(?<content>[^""'>]*)(\2)\s+name=(['""]?)Keywords(\4)\s+)|(\s+name=(['""]?)Keywords(['""]?)\s+content=(['""]?)(?<content>[^""'>]*)(['""]?)\s+).*?>",System.Text.RegularExpressions.RegexOptions.IgnoreCase);  
    System.Text.RegularExpressions.MatchCollection m = reg.Matches(str); //设定要查找的字符串
    for (int i = 0; i < m.Count; i++)
    {
      Response.Write(m[i].Groups["content"].ToString()+"<br>");
    }
      

  10.   

    像这种位置不固定html属性代码用正则来实现比较费力,幸好这里还只是判断了两种情况,如果是有n多属性的话就很难用正则来实现了,像这种html代码,建议用下面的方式实现:
    1.如果代码符合xml标准的话建议用xml来实现.
    2.网上好像有那种可以解析hmtl格的组件parehtml;
      

  11.   

    补充一个,两种情况都可以:
     
    string text = "dfdfdfd<META content=\".net,正则表达式,使用,反向引用\" name=\"Keywords\" />dd";
    text = Regex.Match(text, @"(?<=meta.+?content=['""]?)[^""']+(?=[""'])", RegexOptions.IgnoreCase).Value;
      

  12.   

    要判断(name="Keywords")就改成:string text = "<html>asfasfas<META  name=\"Keywordsd\"  content=\"测试第二种情况\" />";
    text = Regex.Match(text, @"(?<=meta.+?(?<name>name=""Keywords"".+?)*content=['""]?)[^""']+(?=[""'](?(name)|.+name=""Keywords""))", RegexOptions.IgnoreCase).Value;