package homeWork.day5_Lambda_arithmetic_regular.no7_identity_getBir; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Identity { public static void main(String[] args) { // String data= "364634"+"20150421"+"2543"; String data = "来黑马程序员学习Java,\n" + "电话:18512516758,18512508907\n" + "或者联系邮箱: boniu@itcast.cn\n" + "身份证: 440306199512131548\n" + "座机电话:01036517895,010-98951256\n" + "邮箱:bozai@itcast.cn,\n" + "邮箱2:dlei0009@163.com,\n" + "身份证号:110101199001011274,\n" + "热线电话:400-618-9090 ,400-618-4000,\n" + "身份证号:21212320010213123X,\n" + "4006184000,4006189090\n"; Pattern pattern= Pattern.compile(FormatRegular.ID_NUM); Matcher matcher= pattern.matcher(data); while (matcher.find()){ System.out.println("身份证号:"+matcher.group()); //分组后会先以外括号开始,然后再是括号内的组,然后才是下一个组 System.out.println("出生日期:"+matcher.group(1)+"-"+matcher.group(3)+"-"+matcher.group(4)); switch (matcher.group(4)){ case "1":case "3":case "5":case "7":case "9": System.out.println("性别:男"); break; default: System.out.println("性别:女"); } } } }
时间: 2024-02-14 18:34:03 浏览: 57
lambda-change-java.rar_java lambda_lambda
这段代码是一个使用正则表达式匹配身份证号码,并提取出身份证号码的出生日期和性别的例子。
首先,定义了一个 `FormatRegular` 类,其中包含了一个 `ID_NUM` 的常量,它是一个正则表达式,用于匹配身份证号码。然后,在 `Identity` 类中,通过调用 `Pattern.compile` 方法,得到一个 `Pattern` 对象,该对象表示编译后的正则表达式。接着,通过调用 `Matcher` 对象的 `find` 方法,对指定的字符串进行匹配。如果匹配成功,就可以通过 `Matcher` 对象的 `group` 方法,获取匹配到的子串。
在这段代码中,使用了正则表达式的分组功能,将身份证号码中的年月日分别提取出来,然后根据身份证号码中的最后一位数字(代表性别),判断出性别。最后将结果输出。
阅读全文