javapattern(Java Pattern类详解「终于解决」)

发布时间:2025-12-10 19:23:37 浏览次数:4

Java Pattern类详解「终于解决」-javapattern的用法

Java Pattern类详解「终于解决」JavaPattern类详解 Pattern在java.util.regex包中,是正则表达式的编译表示形式,此类的实例是不可变的,可供多个并发线程安全使用。 定义publicfinalclassPatternextendsObjectimplementsSerializable 构造器privatePattern(Stringp,intf){patter…

Java Pattern类详解

Pattern在java.util.regex包中,是正则表达式的编译表示形式,此类的实例是不可变的,可供多个并发线程安全使用。

定义

public final class Pattern extends Object implements Serializable

是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!

为防止网络爬虫,请关注公众号回复”口令”

激活idea 激活CLion DataGrip DataSpell dotCover dotMemory dotTrace GoLand PhpStorm PyCharm ReSharper ReShaC++ Rider RubyMine WebStorm 全家桶 刷新

【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…

构造器

private Pattern(String p, int f) {  pattern = p;  flags = f;

// Reset group index count
capturingGroupCount = 1;
localCount = 0;

if (pattern.length() > 0) {
compile();
} else {
root = new Start(lastAccept);
matchRoot = lastAccept;
}
}

构造器是私有的,不能通过new创建Pattern对象。

获取Pattern类的实例

public static Pattern compile(String regex) {  return new Pattern(regex, 0);}public static Pattern compile(String regex, int flags) {  return new Pattern(regex, flags);}

Pattern调用静态方法compile返回Pattern实例。

组和捕获

捕获组可以通过从左到右计算其开括号来编号。

在表达式((A)(B(C)))中,存在四个组:

1 ABC
2 A
3 BC
4 C

组零始终代表整个表达式。

方法

1.static Pattern compile(String regex)

将给定的正则表达式编译并赋予给Pattern类

2. static Pattern compile(String regex, int flags)

同上,但增加flag参数的指定,可选的flag参数包括:CASE INSENSITIVE,MULTILINE,DOTALL,UNICODE CASE, CANON EQ

3. int flags()

返回当前Pattern的匹配flag参数.

Pattern p = Pattern.compile("a+", Pattern.CASE_INSENSITIVE);System.out.println(p.flags());// 2

4. String pattern()

返回该Patter对象所编译的正则表达式。

Pattern p = Pattern.compile("\\d+");System.out.println(p.toString());// 输出\d+System.out.println(p.pattern());// 输出\d+

5.Pattern.split(CharSequence input)

此方法用于分隔字符串,并返回一个String[]。

Pattern p=Pattern.compile("\\d+");String[] str=p.split("我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.com");

运行结果

str[0]=”我的QQ是:” str[1]=”我的电话是:” str[2]=”我的邮箱是:aaa@aaa.com”

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

input:要拆分的字符序列;limit:结果阈值,控制应用模式的次数,从而影响结果数组的长度。

6.Pattern.matcher(String regex,CharSequence input)

此方法是一个静态方法,用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串.

Pattern.matches("\\d+","2223");//返回truePattern.matches("\\d+","2223aa");//返回false,需要匹配到所有字符串才能返回true,这里aa不能匹配到Pattern.matches("\\d+","22bb23");//返回false,需要匹配到所有字符串才能返回true,这里bb不能匹配到

7.Pattern.matcher(CharSequence input)

返回一个Matcher对象,Pattern类只能做一些简单的匹配操作,要想得到更强更便捷的正则匹配操作,那就需要将Pattern与Matcher一起合作。

Pattern p=Pattern.compile("\\d+");Matcher m=p.matcher("22bb23");m.pattern();//返回p 也就是返回该Matcher对象是由哪个Pattern对象的创建的

例子

import java.util.regex. * ;public class Replacement {  public static void main(String[] args) throws Exception {    // 生成一个Pattern,同时编译一个正则表达式    Pattern p = Pattern.compile("[/]+");    //用Pattern的split()方法把字符串按"/"分割    String[] result = p.split("Kevin has seen《LEON》seveal times,because it is a good film." + "/ 凯文已经看过《这个杀手不太冷》几次了,因为它是一部" + "好电影。/名词:凯文。");    for (int i = 0; i < result.length; i++)    System.out.println(result[i]);  }}

输出结果为:
Kevin has seen《LEON》seveal times,because it is a good film.
凯文已经看过《这个杀手不太冷》几次了,因为它是一部好电影。
名词:凯文。

总结

Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式。



版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。

需要做网站?需要网络推广?欢迎咨询客户经理 13272073477