我有一个字符串line
String line = "03/15";
我想把其中的03,15分别匹配出来
我用这个正则表达式测试工具:http://tool.oschina.net/regex/
直接用\d{2}就能匹配出来了
但在Java中却不行
Java中应该怎么写呢?
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)); }
请问"^(\\d{2})/(\\d{2})$"这个该怎么理解呢?
03,15跟这个是匹配的?
@Catcher_8: \d是匹配一个一位数字,即[0-9],{2}是用来修饰前面的\d的,表示匹配两位数字,/即匹配/,反斜线需要转义,所以前面加了\
@jello chen: 两位数字的话不是用\d{2}就能匹配了吗?
"^(\\d{2})/(\\d{2})$"匹配出的结果不是"03/15"这整个字符串吗?
@Catcher_8: 通过(...)这个捕获组捕获,然后你就可以Matcher.group(1...N)来获取,其中,group()的参数是捕获组的位置,位置的确定是这样的,先从左(看方向,默认是从左到右)开始排无名称的捕获组,第一个是1,依次排,然后接着从左排有名称的,依次排。
@jello chen: 谢谢你的解答!