<h1 class="username">韩同芳</h1>
<h1 class="username">❤孙小峰❤</h1>
<h1 class="username">张赫 ✿_✿(✿我不是单身、七年不会长)</h1>刚刚学的,我的正则表达式是这样的\b(?<=username.{1}\>)\w+(?=<\/h1)\b,
单纯的汉字如第一个可以匹配出来,但是有这些心什么的特殊符号就不行了,请问这样的该如何匹配呢,谢谢大家

解决方案 »

  1.   

    正则表达式有问题,再说你的字符串通过Console.Write方法输出的内容和原始内容有差别的
      

  2.   

                string str= @"<h1 class=""username"">韩同芳</h1>
    <h1 class=""username"">❤孙小峰❤</h1>
    <h1 class=""username"">张赫 ✿_✿(✿我不是单身、七年不会长)</h1>";
                Regex reg = new Regex(@"(?is)(?<=<h1\sclass=""username"">)(?:(?!</?h1).)*");
                foreach (Match m in reg.Matches(str))
                    Console.WriteLine(m.Value);
      

  3.   

    说实话,楼主给的正则表达式我不是很理解,不知道是否可以解释一下。
    你可以这样实现:
    string testStr = "<h1 class=\"username\">韩同芳</h1>   <h1 class=\"username\">❤孙小峰❤</h1>  <h1 class=\"username\">张赫 ✿_✿(✿我不是单身、七年不会长)</h1>";
    Regex rg = new Regex("<h1 class=\"username\">([^<]*)</h1>",RegexOptions.Singleline);
    MatchCollection mc = rg.Matches(testStr);
    foreach (Match m in mc)
    {
    Console.WriteLine(m.Groups[1].Value);
    //在这里可以写入某个文本文件,然后在文本文件中查看结果
    }
      

  4.   

    //只要是包含username的标签都会捕捉里面的值
    Regex re = new Regex(@"<\w+\b[^>]*?\busername\b[^>]*>([\s\S]*?)</\1>", RegexOptions.None);
    MatchCollection matches = re.Matches(str);
    foreach(Match match in matches)
    {
    //输出
    string xxx = match.Groups[2].Value;
    }