分组匹配
约 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,即整个正则匹配到的字符串