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 13:34:03 浏览: 21
这段代码是一个使用正则表达式匹配身份证号码,并提取出身份证号码的出生日期和性别的例子。
首先,定义了一个 `FormatRegular` 类,其中包含了一个 `ID_NUM` 的常量,它是一个正则表达式,用于匹配身份证号码。然后,在 `Identity` 类中,通过调用 `Pattern.compile` 方法,得到一个 `Pattern` 对象,该对象表示编译后的正则表达式。接着,通过调用 `Matcher` 对象的 `find` 方法,对指定的字符串进行匹配。如果匹配成功,就可以通过 `Matcher` 对象的 `group` 方法,获取匹配到的子串。
在这段代码中,使用了正则表达式的分组功能,将身份证号码中的年月日分别提取出来,然后根据身份证号码中的最后一位数字(代表性别),判断出性别。最后将结果输出。
相关问题
java-1.8.0-openjdk.x86_64
### 回答1:
java-1.8.0-openjdk.x86_64是一种Java编程语言的开源实现。它是基于OpenJDK项目的构建,适用于64位x86架构的计算机。Java是一种广泛使用的程序设计语言,它具有跨平台的特性,可以在不同的操作系统上运行。Java开发者使用Java开发工具包(Java Development Kit,JDK)来编写、编译和运行Java程序。而java-1.8.0-openjdk.x86_64就是Java 8版本的OpenJDK实现。
Java 8是Java平台的重要版本。它引入了许多新的特性和改进,包括Lambda表达式、函数式接口、默认方法、流API、新的日期和时间API等。Lambda表达式和函数式接口使得在Java中可以更方便地使用函数式编程风格。默认方法允许在接口中定义具体的方法实现,从而减少接口实现类的代码量。流API提供了一种更直观、更高效的方式来处理集合数据。新的日期和时间API解决了之前Java中日期和时间处理的一些问题,并提供了更强大、更易用的功能。
使用java-1.8.0-openjdk.x86_64,开发者可以在64位x86架构的操作系统上使用Java 8的新特性和改进。通过使用这个版本的OpenJDK,开发者可以在开源软件的基础上进行Java开发,享受到Java平台的强大功能,并且可以参与到OpenJDK社区中,贡献代码和交流经验。总之,java-1.8.0-openjdk.x86_64是一个重要的Java开发工具,适用于64位x86架构的计算机,可以帮助开发者更方便地使用Java 8的新特性。
### 回答2:
Java-1.8.0-openjdk.x86_64 是Java开发工具包的一个版本,适用于64位x86架构的操作系统。它是基于开源项目OpenJDK的一个具体实现,由Red Hat提供支持。OpenJDK是一个以Java为中心的开源社区,致力于开发和维护Java技术的免费实现。
Java-1.8.0-openjdk.x86_64是Java 8的一个版本,它提供了许多新的特性和改进,包括Lambda表达式、Stream API、新的日期和时间API等。这些新功能使得Java编程更加简洁、高效和易于使用。
由于Java-1.8.0-openjdk.x86_64是免费和开源的,因此它可以在各种操作系统上使用,包括Linux、Unix和Windows等。它还兼容许多开发工具和框架,如Eclipse、NetBeans和Spring等,这使得开发人员可以在使用Java进行开发时,使用他们喜欢的工具。
Java-1.8.0-openjdk.x86_64的安装和配置相对简单,可以通过下载安装包并按照说明进行安装。安装完成后,开发人员就可以开始使用Java 8的新特性来开发各种类型的应用程序,如Web应用、桌面应用和移动应用等。
总之,Java-1.8.0-openjdk.x86_64是一个开源、免费和功能强大的Java开发工具包,适用于64位x86架构的操作系统。它提供了许多新的特性和改进,使得Java编程更加方便和高效。
### 回答3:
java-1.8.0-openjdk.x86_64是一个Java开发套件,适用于64位的Linux操作系统。它是以开放源代码形式提供的,遵循开放Java社区制定的规范和标准。
这个开发套件是基于OpenJDK项目的一个版本,它提供了Java语言的开发和运行环境。它包含了Java编译器、Java虚拟机以及其他一些开发所需的工具。通过这个开发套件,开发者可以使用Java语言编写应用程序,然后在Linux操作系统上进行编译和执行。
Java-1.8.0-openjdk.x86_64是Java SE 8的一个实现版本,提供了Java 8的特性和功能。Java 8引入了许多新的特性,包括Lambda表达式、函数式接口、Stream API等,这些特性使得Java编程更加简洁和强大。
对于开发者来说,Java-1.8.0-openjdk.x86_64提供了一个强大和可靠的开发平台。它具有良好的性能和稳定性,并且可以与许多其他开发工具和框架集成。通过使用这个开发套件,开发者可以开发各种类型的应用程序,包括桌面应用、Web应用、移动应用等。
总而言之,java-1.8.0-openjdk.x86_64是一个适用于64位Linux的Java开发套件,提供了Java语言的开发和运行环境,以及Java SE 8的特性和功能。它为开发者提供了一个强大和可靠的平台,用于开发各种类型的应用程序。
package homeWork.day5_Lambda_arithmetic_regular.no7_identity_getBir; public interface FormatRegular { //1 年 3月 4日 //身份证号 前六位 [^0&&\d]\d{5} 生日 (19\d\d|20\d\d)(1[0-2]|0[1-9])(0[1-9]|[1-3]\d) \d{3}[\dX] String ID_NUM= "[^0&&\\d]\\d{5}((19|20)\\d\\d)(1[0-2]|0[1-9])(0[1-9]|[1-3]\\d)\\d\\d(\\d)[\\dX]"; }
这段代码定义了一个接口 `FormatRegular`,其中包含了一个常量 `ID_NUM`,它是一个字符串,表示用于匹配身份证号码的正则表达式。
具体来说,这个正则表达式可以分为以下几个部分:
- `[^0&&\\d]\\d{5}`:匹配身份证号码中的前六位,第一位不能为 0 或数字,后面五位为数字。
- `((19|20)\\d\\d)`:匹配身份证号码中的出生年份,必须为 1900~2099 年。
- `(1[0-2]|0[1-9])`:匹配身份证号码中的出生月份,必须为 01~12 月。
- `(0[1-9]|[1-3]\\d)`:匹配身份证号码中的出生日期,必须为 01~31 日。
- `\\d\\d`:匹配身份证号码中的顺序号,为两位数字。
- `(\\d)`:匹配身份证号码中的校验位,为一位数字。
- `[\\dX]`:匹配身份证号码中的校验位,可以是数字或大写字母 X。
因此,这个正则表达式可以匹配符合规定的身份证号码,并将其中的年月日、顺序号和校验位提取出来。