日期:2014-05-20  浏览次数:20682 次

String 截取
String shuju="阿森纳----盘路走势图 17胜 5平 4负 积分:56 排名: 2";

怎么获取  ”积分“ 和  “排名” 之间的 56   和 “排名后面的” 2
------解决方案--------------------

        String shuju = "阿森纳----盘路走势图 17胜 5平 4负 积分:56 排名: 2";
        Pattern p = Pattern.compile("(?<=积分[::])\\s*\\d+");
        Matcher m = p.matcher(shuju);
        if (m.find()) {
            System.out.println(m.group().trim());
        }
        p = Pattern.compile("(?<=排名[::])\\s*\\d+");
        m = p.matcher(shuju);
        if (m.find()) {
            System.out.println(m.group().trim());
        }

------解决方案--------------------
把5楼的正则表达式优化一下
.*积分:\s*(\d+)\s*排名: (\d+)

可以从group中直接取出两个数字m.group(1),m.group(2)
------解决方案--------------------
引用:
把5楼的正则表达式优化一下
.*积分:\s*(\d+)\s*排名: (\d+)

可以从group中直接取出两个数字m.group(1),m.group(2)

补充楼上
[code =java]
String shuju="阿森纳----盘路走势图 17胜 5平 4负 积分:56 排名: 2";
Pattern p = Pattern.compile(".*积分:(\\d+).*排名:\\s(\\d+)");
Matcher m = p.matcher(shuju);
if(m.matches()){
System.out.println(m.group(1));
System.out.println(m.group(2));
}
[/code]
------解决方案--------------------
String shuju="阿森纳----盘路走势图 17胜 5平 4负 积分:56 排名: 2";
Pattern p = Pattern.compile(".*积分:(\\d+).*排名:\\s(\\d+)");
Matcher m = p.matcher(shuju);
if(m.matches()){
System.out.println(m.group(1));
System.out.println(m.group(2));
}