需求:一个字符串里面有 中文(\u4e00-\u9fa5) 大写字母(A-Z) 小写字母(a-z) 数字(\d) 他们各自分为一组,如字符串:“我们shiZHONGguo1234人”其中 我们 是一组,shi 是一组…… 
现在我的要求就是在他们换组(例如:从中文变成字母了)的地方加入一个字符*
处理之后的结果就是:我们*shi*ZHONG*guo*1234*人
不知道我说明白了没有,求正则大神教教我!

解决方案 »

  1.   

    Response.Write(Regex.Replace("我们shiZHONGguo1234人", 
                    @"[\u4e00-\u9fa5]+|[a-z]+|[A-Z]+|\d+", 
                    "$0*").TrimEnd('*'));
    /*
    我们*shi*ZHONG*guo*1234*人 
    */
      

  2.   


            string tempStr = "我们shiZHONGguo1234人";
                string pattern = @"(?m)(?=([a-z]+|[A-Z]+|\d+|[\u4e00-\u9fa5]+))\1";
                Regex reg=new Regex (pattern);            string result = reg.Replace(tempStr, m => { return "*" + m.Value; }).TrimStart('*');//输出 我们*shi*ZHONG*guo*1234*人
      

  3.   


    void Main()
    {
    string str="我们shiZHONGguo1234人";
     
    Regex reg=new Regex(@"([a-z]+|[A-Z]+|\d+|[\u4e00-\u9fa5]+)",RegexOptions.IgnorePatternWhitespace);
    var arry=reg.Split(str).Where(s=>s.Length>0).ToArray();
    Console.WriteLine(string.Join("*",arry));
    //我们*shi*ZHONG*guo*1234*人
    }