分组匹配
237字小于1分钟
2024-08-10
(...)
还有一个重要作用,就是分组匹配
Pattern
如何用正则匹配区号-电话号码这个规则?
\d{3,4}\-\d{6,8}
如何提取匹配的子串?
用 (...)
先把要提取的规则分组,把上述正则表达式变为 (\d{3,4})\-(\d{6,8})
public static void main(String[] args) {
Pattern pattern = Pattern.compile("(\\d{3,4})\\-(\\d{7,8})");
// 获得Matcher对象:
Matcher matcher = pattern.matcher("010-12345678");
if (matcher.matches()) {
String whole = matcher.group(0); // "010-12345678", 0表示匹配的整个字符串
String area = matcher.group(1); // "010", 1表示匹配的第1个子串
String tel = matcher.group(2); // "12345678", 2表示匹配的第2个子串
System.out.println(whole);
System.out.println(area);
System.out.println(tel);
}
}
要特别注意,Matcher.group(index)
方法的参数用 1
表示第一个子串,2
表示第二个子串。如果我们传入 0
会得到什么呢?答案是 010-12345678
,即整个正则匹配到的字符串