怎么样把一个字符串,例如:aaaaaa100K中的100提出来。规则:字符串长度不定,数字出现次数不定,数字长度不定,但是要取得数字最后有一个“K”字符,例如:100aaa100bbbccc200K,取出结果为200300bb14b500K200取出结果为500.假如出现300b500k400kaaaa,取出结果为400,即如果多次出现“数字+k”的组合,取出最后出现的“数字+k”.

解决方案 »

  1.   

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test {    public static void main(String[] args) {
            String str = "300b500k400kaaaa450Kdd";
            String p = "\\d+[kK](?!.*?\\d+[kK].*?)";
            Pattern pattern = Pattern.compile(p);
            Matcher matcher = pattern.matcher(str);
            while(matcher.find()) {
                System.out.println(matcher.group());
            }
        }
    }
      

  2.   

    ^[/d?K]$
    拿出來以后在substring下
      

  3.   

    改一下哈String p = "\\d+[kK](?!.*\\d+[kK])";
      

  4.   

    aaa408K,楼上的不对,取不出来了,而且还是把K取出来了,能不能只取数字?谢谢关注!
      

  5.   

    你直接再取个子串,或是replaceall一下,把k去掉不就可以了么
      

  6.   

    那我的那个就改成这样子:String p = "\\d+(?=[kK])(?!.*\\d+[kK])";
      

  7.   

    和正则关系不大
    public class Test { /**
     * @param args
     */
    public static void main(String[] args) {
    String s = "300bb14b500K200";
    int i = s.lastIndexOf("K");
    String s1 = s.substring(0,i);
    char[] c = s1.toCharArray();
    int k = 0;
    for(i = c.length - 1; i >= 0; i--){
    if(c[i] > '9' || c[i] < '0'){
    k = i + 1;
    break;
    }
    }
    String s2 = s1.substring(k);
    System.out.println(s2);
    }}
      

  8.   

    bao的正則真是
    你們老大是不是專門要你負責正則的啊
      

  9.   

    bao110908是正则方面牛人,谢谢。结贴了