求正则表达式“  abcd1234*5678  ”
分别取出 
abcd 
1234
5678
前2个好写,最后一个? 取乘号之后的数字?
a="  abcd1234*5678  "
 b = Regex.Match(a, @"\S[a-z]*").ToString();
 c = Regex.Match(a, @"\d+").ToString();
 d =  ?

解决方案 »

  1.   

    var ms = Regex.Matches(a,@"[a-zA-Z]+|\d+");foreach(Match m in ms)
    {
         所有匹配项。或全为字母,或全为数字。
    }
      

  2.   

    我需要对以下序列填表
     abcd1234*5678 ,jhg90*12,def34*67
    并且要保证是 字母+数字*数字 这个规则。
    要检测是否符合规律,如果符合就抽出中间的三个值。我这样写的,虽然可以跑通程序,不算理想的。
     d= Regex.Match(a, @"\*[0-9]+").ToString();
     d=d.Replace("*","");是否还有高人?
      

  3.   

    string t=a.substring(a.lastindex("*"),a.length-a.lastindex("*"));
      

  4.   

    什么高人,需求不一次性说清楚,真是的var ms = Regex.Matches(a, @"([a-zA-Z]+)(\d+)\*(\d+)");
    foreach(Match m in ms)   // 循环处理得到的所有  字母数字*数字的匹配。
    {
            b=m.Groups[1].Value;  // 这里得到全是字母
            c=m.Groups[2].Value;  // 这里得到是字母后面紧跟着的数字。
            d=m.Groups[3].Value;  // 这里得到的是*后的数字
    }
      

  5.   

    4楼的代码没有做规则检查,即要求第一位置必须是字母段,第二必须是数字段,第三位置也是。而且必须有*分隔第二和第三。
    我贴出现在的代码:(增加一个功能,输入s="abc123*456" 扩展到s="abc0.1*456" "abc1.0*456"这种位访问模式,也好用。)现在用了字符串查找替换的方法,很笨,希望用正则一次完成。
                  Single  address;
                int number;
                           
                string type,addr,num,addr1,addr2;
                type= Regex.Match(s, @"\S[a-z]*").ToString();
               addr = Regex.Match(s, @"\d*").ToString();
               addr1 = Regex.Match(s, @"\d\.").ToString();
               addr2 = Regex.Match(s, @"\.\d").ToString();
              num = Regex.Match(s, @"\*[0-9]+").ToString();            num=num.Replace("*","");
                
                if (addr=="")//如果是位访问模式
                {
                    addr1 = addr1.Replace(".", "");
                    addr2 = addr2.Replace(".", "");                address = int.Parse(addr1) * 8 + int.Parse(addr2);
                    address = address / 8;
                    addr = address.ToString();            }
      

  6.   

    正则改成这样
    ^([a-zA-Z]+)(\d+)\*(\d+)$
      

  7.   


    改成你这样,如果一个字符串里出现两个这样的数据,就读不出来喽,如:“ abc123*456 abc123*456 ”