本帖最后由 greenic 于 2011-06-08 15:36:35 编辑

解决方案 »

  1.   

    没有明确的格式是不好用正则的,你这个作者的规律还好,后面的名字就不好说了。比如是两个字还是多个,后面还有其它信息没有如:作者:张三(教授) 
    作者:李四<a>详细信息</a>
    或者 作者:张三 李四 合著。
      

  2.   

    var regex = /作.*?者.*?([\u4e00-\u9fa5]+)/i;
    var array = ["<b>作&bnsp;者:</b><span>明明</span>","作者:明明","<b>作&bnsp;者:</b><span>明明</span>","<b>作者:</b>明明 <b>单位:</b>xx公司"];
    for(var i = 0 ; i < array.length ; i ++)
    {
      if(regex.test(array[i])) document.write(RegExp.$1+"</br>")
    }
      

  3.   

    /作.*者:[^\u4e00-\u9fa5]*([\u4e00-\u9fa5].*)(?:\r\n|\n|\s*<)/i暂时只想到这么多,判断规则是冒号后第一个汉字(仅常用汉字)带起的字串,直到遇到换行或者左尖括号结束
    超出这个规则就要另写了
      

  4.   

    void Main()
    {
        string str=@"第一种格式:
    作者:明明
    年龄:28岁第二种格式:
    <p><b>作者:</b>明明</p>
    身高:170cm第三种格式:
    <b>作&bnsp;者:</b><span>明明</span>
    身重:60Kg第四种格式:
    <b>作者:</b>明明 <b>单位:</b>xx公司";
    foreach(Match m in Regex.Matches(str,@"作(&bnsp;)?者[::].*?(?<name>[\u4e00-\u9fa5]+)"))
    {
     Console.WriteLine(m.Groups["name"].Value);
    }/*
    明明
    明明
    明明
    明明
    */
    }
    这是兔子党执行督察(q107770540)给的解决办法,帖出来共享,感谢之。