string s = "wendu20shidu46wendu19shidu43";
string result = System.Text.RegularExpressions.Regex.Match(s, @"?<=wendu)\d+").Value;

解决方案 »

  1.   

    这个用正则感觉不是很能解决问题,应该用REPLACE替换w和s为",",然后用split切割,这样才能得到各自的值。
      

  2.   

    可以是可以,只是比较麻烦,不如用切割法简单明了,像wendu的获得,需要匹配一次,shidu也需要匹配一次,而且必须得分开匹配,分清wendu和shidu。
      

  3.   

    嗯,如果真的算起来,切割法可能比正则还多几行代码,正则应该更简单点。一楼的正则少了一个(。(?<=wendu)\d+
    (?<=shidu)\d+
    两次匹配。
      

  4.   

    不应该去解析这个东西..应该从根本入手..这数据是哪来的?应该从源就修改他..比如集合 比如json
      

  5.   

    是哦,怎么少了半个括号。Ubuntu的烂输入法经常吃掉符号。