zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java正则表达式 Pattern 类的用法

JAVA正则表达式 用法 pattern
2023-09-11 14:22:11 时间

 

一、 Pattern类简介

public final class Pattern extends Object implements Serializable

 正则表达式的编译表示。

必须首先将正则表达式(指定为字符串)编译为此类的实例。 然后将所得的图案可以被用来创建一个Matcher对象可以匹配任意character sequences针对正则表达式。 执行匹配的所有状态都驻留在匹配器中,所以许多匹配者可以共享相同的模式(API摘录)。

1.1特殊字符

1.2限定符

二、简单示例

2.1匹配数字

/**
 * \d 的含义是 [0-9]
 * \D 的含义是 [^0-9]
 * {n} 匹配确定 n 次
 */
public static void matchNumber() {
        Pattern p = Pattern.compile("summary_day\\.\\d+[0-9]\\.\\d{17}");
        Matcher m = p.matcher("ipva.summary_day.20210621.20210622000205860.B20C41AB-0A17-46DB-9177-817533B8E551.1624291336921.txt");
        System.out.println(m.pattern()); //myArray\[\d\]
        while (m.find()){
            System.out.println(m.group());
        }
}

2.2匹配字母

/**
 * \w 任何一个字母数字字符(大小写均可)或下划线,等价于 [A-Za-z0-9_]
 * \W 表示[^A-Za-z0-9_]
 * + 匹配前面的子表达式或一次或多次
 */
public static void matchAlphanum() {
        Pattern pattern = Pattern.compile("^ipva\\.\\w+");
        Matcher matcher = pattern.matcher("ipva.summary_day.20210621.20210622000205860.B20C41AB-0A17-46DB-9177-817533B8E551.1624291336921.txt");
        while (matcher.find()) {
            System.out.println(matcher.group(0));
        }
}

2.3特殊字符一

​/**
 * "*" 表示含有零个或者多个
 * "+" 匹配前面的子表达式或一次或多次
 */
public static void matchRepeat() {
    Pattern pattern = Pattern.compile("\\w+[\\w\\.]*@[\\d]+\\.\\w+");
    Matcher matcher = pattern.matcher("Hello .kangll@163.com is my email address.");
    while (matcher.find()) {
        System.out.println(matcher.group(0));
    }
}

2.4特殊字符二

/**
 * "*" 表示含有零个或者多个
 * "+" 表示匹配前面的子表达式或一次或多次
 * "?" 表示匹配零个或者一个字符
 */
public static void matchRepeat02() {
    Pattern pattern = Pattern.compile("http[s]?://[\\w\\.]+");
    Matcher matcher = pattern.matcher("The URL is http://www.kangll.com/");
    while (matcher.find()) {
        System.out.println(matcher.group(0));
    }
}

谢谢点赞和关注!