首页 新闻 赞助 找找看

关于Java正则表达式的问题

0
悬赏园豆:10 [已解决问题] 解决于 2016-04-05 14:34

我有一个字符串line

String line = "03/15";

我想把其中的03,15分别匹配出来

我用这个正则表达式测试工具:http://tool.oschina.net/regex/

直接用\d{2}就能匹配出来了

但在Java中却不行

Java中应该怎么写呢?

Catcher_8的主页 Catcher_8 | 初学一级 | 园豆:151
提问于:2016-04-04 20:48
< >
分享
最佳答案
0
String line = "03/15";
        Pattern pattern = Pattern.compile("^(\\d{2})/(\\d{2})$");
        Matcher matcher = pattern.matcher(line);
        while(matcher.find()){
            System.out.println(matcher.group(1));
            System.out.println(matcher.group(2));
        }

 

收获园豆:10
jello chen | 大侠五级 |园豆:7306 | 2016-04-04 21:29

请问"^(\\d{2})/(\\d{2})$"这个该怎么理解呢?

03,15跟这个是匹配的?

Catcher_8 | 园豆:151 (初学一级) | 2016-04-04 22:55

@Catcher_8: \d是匹配一个一位数字,即[0-9],{2}是用来修饰前面的\d的,表示匹配两位数字,/即匹配/,反斜线需要转义,所以前面加了\

jello chen | 园豆:7306 (大侠五级) | 2016-04-05 00:11

@jello chen: 两位数字的话不是用\d{2}就能匹配了吗?

"^(\\d{2})/(\\d{2})$"匹配出的结果不是"03/15"这整个字符串吗?

Catcher_8 | 园豆:151 (初学一级) | 2016-04-05 09:11

@Catcher_8: 通过(...)这个捕获组捕获,然后你就可以Matcher.group(1...N)来获取,其中,group()的参数是捕获组的位置,位置的确定是这样的,先从左(看方向,默认是从左到右)开始排无名称的捕获组,第一个是1,依次排,然后接着从左排有名称的,依次排。

jello chen | 园豆:7306 (大侠五级) | 2016-04-05 09:29

@jello chen: 谢谢你的解答!

Catcher_8 | 园豆:151 (初学一级) | 2016-04-05 14:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册