当前位置: 代码迷 >> J2SE >> 如何用正则表达式找出所有的精确两位整数
  详细解决方案

如何用正则表达式找出所有的精确两位整数

热度:10   发布时间:2016-04-23 19:53:30.0
怎么用正则表达式找出所有的精确两位整数
需要找出两位整数(仅仅含两位数)


    public void test1(){
        // 只能找出38,78,91,但是我的代码找出了1190中的11,90和246中的24,求破
        String s = "jf,ka38xf7kkkkfjfa1190;;;x246kj kj78mm91";
        Pattern p = Pattern.compile("\\d{2}");
        Matcher m = p.matcher(s);
        while(m.find()){
            System.out.println(m.group());
        }
    }


我代码有问题,正则表达式不会写了,请指教一下。
------解决思路----------------------

public static void test1(){
        // 只能找出38,78,91,但是我的代码找出了1190中的11,90和246中的24,求破
        String s = "51jf,ka38xf7kkkkfjfa1190;;;x246kj kj78mm91";
        Pattern p = Pattern.compile("(?<=^
------解决思路----------------------
\\D)(\\d{2})(?=\\D
------解决思路----------------------
$)");
        Matcher m = p.matcher(s);
        while(m.find()){
            System.out.println(m.group());
        }
    }

或者

public static void test2(){
        // 只能找出38,78,91,但是我的代码找出了1190中的11,90和246中的24,求破
        String s = "51jf,ka38xf7kkkkfjfa1190;;;x246kj kj78mm91";
        Pattern p = Pattern.compile("(^
------解决思路----------------------
\\D)(\\d{2})(\\D
------解决思路----------------------
$)");
        Matcher m = p.matcher(s);
        while(m.find()){
            System.out.println(m.group(2));
        }
    }

------解决思路----------------------
(?<!\\d)\\d{2}(?!\\d)用这个可以一次性~
------解决思路----------------------
(?<![\\d,.])[1-9]\\d(?![\\d,.])

此贴可以结了!
------解决思路----------------------
引用:
(?<!\\d)\\d{2}(?!\\d)用这个可以一次性~

这个正则有点缺陷:如果出现小数或者01这样的也会匹配到
------解决思路----------------------
http://goobbe.com/questions/8146685/regex-match-digits-comma-and-semicolon