欢迎访问宙启技术站
智能推送

Java正则表达式函数解析与应用

发布时间:2023-06-07 02:36:54

Java正则表达式是Java语言内置的一种字符串匹配工具,其可以帮助我们非常方便、快捷地完成字符串匹配、替换等操作。在Java中使用正则表达式主要依赖两个类:Pattern和Matcher。在本文中,我们将详细介绍这两个类的使用方法,并且讲解如何进行正则表达式匹配、替换及校验等操作。

一、Pattern类

定义:

Pattern是正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个Pattern对象,你必须首先调用其公共静态编译方法,它会返回一个Pattern对象。该方法接受一个正则表达式参数,并将其编译为一个Pattern对象。如果正则表达式不合法,该方法将抛出一个PatternSyntaxException异常。

示例:

String regex = "^\\d+$";

Pattern pattern = Pattern.compile(regex);

参数:

可以使用Pattern类的各种方法获取一些有用的信息,例如,可以使用pattern()方法获取编译好的Pattern,可以使用flags()方法获取编译时的标志,可以使用toString()方法获取正则表达式的字符串表示。

Pattern类的常用方法:

1. boolean matches(String regex, CharSequence input):

     该方法以正则表达式和输入的字符序列作为参数,返回一个boolean值,表示正则表达式是否匹配输入的字符序列。 

示例:

Pattern pattern = Pattern.compile("\\d+");

Matcher matcher = pattern.matcher("Hello222World");

System.out.println(matcher.matches());

输出:

false

2. String[] split(CharSequence input,int limit):

     该方法以输入的字符序列和可选的限制值作为参数,并返回一个字符串数组,其中的元素被输入序列分隔符匹配分割。 

示例:

Pattern pattern = Pattern.compile("\\d+");

String[] arr = pattern.split("1a2b3c4d5e", 3);

for (String s : arr) {

    System.out.println(s);

}

输出:

a

b3c4d5e

3. Matcher matcher(CharSequence input):

     该方法以输入的字符序列作为参数,返回一个Matcher对象,匹配该输入序列和此模式的匹配。 

示例:

Pattern pattern = Pattern.compile("\\d+");

Matcher matcher = pattern.matcher("Hello222World");

System.out.println(matcher.find());

输出:

true

二、Matcher类

定义:

Matcher类是正则表达式以及输入字符串的操作类,Matcher对象只包含共通操作。Matcher类没有公共构造方法。要创建一个Matcher对象,首先必须通过Pattern对象的matcher方法获得。 

示例:

String regex = "^\\d+$";

Pattern pattern = Pattern.compile(regex);

Matcher matcher = pattern.matcher("123456");

参数:

Matcher类也提供了各种方法,例如,可以使用group()方法获取匹配的子序列,可以使用matches()方法判断是否匹配,可以使用replaceAll()方法替换所有匹配的子序列,等等。

Matcher类的常用方法:

1. boolean matches():

     该方法返回布尔值,表示整个字符串是否和正则表达式匹配。 

示例:

Pattern pattern = Pattern.compile("\\d+");

Matcher matcher = pattern.matcher("Hello222World");

System.out.println(matcher.matches());

输出:

false

2. boolean find():

     该方法返回一个布尔值,表示是否找到了下一个子序列,即是否存在下一个匹配的子串。

示例:

Pattern pattern = Pattern.compile("\\d");

Matcher matcher = pattern.matcher("Hello222World");

System.out.println(matcher.find());

输出:

true

3. String group():

     该方法返回一个字符串,表示匹配到的子序列。

示例:

Pattern pattern = Pattern.compile("\\d+");

Matcher matcher = pattern.matcher("Hello222World");

while (matcher.find()) {

    System.out.println(matcher.group());

}

输出:

222

4. String replaceAll(String replacement):

     该方法将输入字符串中匹配到的子字符串用参数replacement所代表的字符串替换。 

示例:

Pattern pattern = Pattern.compile("\\d+");

Matcher matcher = pattern.matcher("Hello222World");

System.out.println(matcher.replaceAll("ABC"));

输出:

HelloABCWorld

三、应用实例

1. 匹配身份证号码

示例:

public static boolean isIDCard(String idCard) {

    String regex = "(\\d{15})|(\\d{17}[a-zA-Z0-9])";

    return Pattern.matches(regex, idCard);

}

2. 匹配手机号码

示例:

public static boolean isPhoneNum(String phoneNum) {

    String regex = "^1[3-9]\\d{9}$";

    return Pattern.matches(regex, phoneNum);

}

3. 替换敏感字符

示例:

public static String replaceSensitiveWords(String str) {

    String regex = "操|草|傻|逼";

    Pattern pattern = Pattern.compile(regex);

    Matcher matcher = pattern.matcher(str);

    return matcher.replaceAll("***");

}

综上所述,Java正则表达式是一个非常强大的字符串处理工具,可以帮助我们方便快捷地实现字符串匹配、替换、校验等操作。在日常开发中,熟练掌握正则表达式的使用方法可以极大地提高程序员的工作效率。