字符串 10*<3>/12-5*<4>-1
用'a'替换所有不是在<>中的数字,所得接过应该是a*<3>/a-a*<4>-a,new Regex(?).Replace("10*<3>/12-5*<4>-1","a")
怎么写这个正则表达式?

解决方案 »

  1.   

    string yourStr = ......;
    string resultStr = Regex.Replace(yourStr, "(?!<)\\d+(?!>)", "a");
      

  2.   

    各位都对,有个问题是若<>里的不是整数就有问题了? new Regex("(?!<)\\d+(?!>)").Replace("10*<3>/12-5*<4.34>-1","a")
    "a*<3>/a-a*<a.a4>-a"
      

  3.   

    ? new Regex("(?<!<)\\d(?!>)").Replace("10*<3>/12-5*<4.34>-1","a")
    "aa*<3>/aa-a*<4.a4>-a"<>外肯定是整数,但是里面有可能是小数
      

  4.   

    还是同样的问题
    ? new Regex("(?<!<)\\d+(\\.\\d+)?(?!>)").Replace("10*<3>/12-5*<4.34>-1","a")
    "a*<3>/a-a*<4.a4>-a"
      

  5.   

    楼主的“<>”内是否只有数字和小数点,而且小数点只出现一次,如果是这样,还简单一些,可以用这个
    string resultStr = Regex.Replace(yourStr, @"(?<![<\d])\d+(?![\d>])", "a");如果除了数字和小数点外,还有可能有其它字符,楼主说明一下,我再看看
      

  6.   

    lxcnn(过客) ( ) 信誉:100    Blog  2007-01-17 10:57:56  得分: 0  
     
     
       楼主的“<>”内是否只有数字和小数点,而且小数点只出现一次,如果是这样,还简单一些,可以用这个
    string resultStr = Regex.Replace(yourStr, @"(?<![<\d])\d+(?![\d>])", "a");如果除了数字和小数点外,还有可能有其它字符,楼主说明一下,我再看看
      
     
    =========================
    这个是可用的,但是方法的确
      

  7.   

    string resultStr = Regex.Replace(yourStr, @"(?<![<\d])\d+(?![\d>])", "a");
    “<>”内只有数字和小数点,这个是可用.敌伯威有什么问题吗?
      

  8.   

    dis10() ( ) 信誉:100    Blog  2007-01-17 11:10:08  得分: 0  
     
     
       string resultStr = Regex.Replace(yourStr, @"(?<![<\d])\d+(?![\d>])", "a");
    “<>”内只有数字和小数点,这个是可用.敌伯威有什么问题吗?
      
     
    =========================
    没问题。:D
      

  9.   

    呵呵,方法的确有点那个,不过正则很大程度上都是针对具体问题的,很少有通用的,所以适用就好
    比如说我给的这个正则,适用于楼主的所给的结果,但是如果要求“<>”外的每个一个数字,而不是连着的整数都替换为一个“a”的话,即要求结果为“aa*<3>/aa-a*<4>-a”,而不是“a*<3>/a-a*<4>-a”的话,它就不适用了
    再就是如果“<>”内如果小数点出现多次,或是有其它字符出现的话,也是不适用的
    所以要楼主把可能出现的情况都说一下,才能给出适用的正则
      

  10.   

    string a=new Regex(@"(?<!<)(?>\d+(\.\d+)?)(?!>)").Replace("10.22*<3>/12-5.44*<4.34>-1","a");
    //等等我啊 真是的
      

  11.   

    当然是我的呗:)
    "10.22*<3>/12-5.44*<4.34>-1" 匹配下看看:)