有一字符串,里面含有逗号分割的5个数字 string str="19,12.95,68,7.6,3.218,4";
 请教一个最简洁的正则,能捕获到不带小数点的数字,如捕获到:19 68 4这三个数字
 我可以用正则捕获到带有小数点的数字:(\d+.\d+) 但不知道如何取反,即不带小数点的数字

解决方案 »

  1.   


                string str = "19,12.95,68,7.6,3.218,4";
                Regex reg = new Regex(@"(?<!\.\d*)\d+(?!\.)(?=,|$)");
                foreach (Match m in reg.Matches(str))
                    Response.Write(m.Value + "<br/>");
    /*
    19
    68
    4
    */
      

  2.   


    void Main()
    {
    string str="19,12.95,68,7.6,3.218,4";
    str=Regex.Replace(str,@"\d+(\.\d+)?,",m=>m.Value.Contains(".")?"":m.Value);
    Console.WriteLine(str);  //19,68,4}
      

  3.   


    这个不错。。开始我写了个就是应为(?<!\.\d*)\d+(?!\.)(?=,|$)红色部分。。没匹配到4
      

  4.   


    @"(?n)(?<=(^|,))\d+(?=(,|$))"
      

  5.   

    谢谢大家了哦@"(?<=(^|,))\d+(?=(,|$))"
    (?n)没有应该没关系吧?