Java正则表达式Pattern和Matcher怎么用?一篇搞懂

 更新时间:2026年07月20日 10:48:24   作者:belien  
还在为Java正则匹配发愁?本文详细讲解java.util.regex包下的Pattern和Matcher类,从建立模式到创建匹配器,再到find()、matches()等方法的使用,帮你快速掌握字符串检索与替换

pattern (模式) 与 matcher (匹配) 搭配使用实现对字符序列的检索和指定模式匹配,这两个类都在 java.util.regex 包中,不同于 StringTokenizer类 和 Scanner类,这两个类都是对字符序列的子序列语言符号进行指定分隔。

1、建立 Pattern 对象:将给定的正则表达式编译成一个模式

(1)compile(String regex) 返回一个 Pattern 对象

使用正则表达式 regex 做参数得到一个称为模式的 Pattern 类的实例对象。

//  正则表达式
String regex = "[0-9.]+";

Pattern pattern = Pattern.compile(regex);
System.out.println("模式对象:" + pattern);

(2)compile(String regex, int flags) 返回一个 Pattern 对象

参数 flags 可以去下列有效值:

  • Pattern.CASE_INSENSITIVE:忽略匹配字符的大小写
  • Pattern.MULTILINE
  • Pattern.DOTALL
  • Pattern.UNICODE_CASE
  • Pattern.CANON_EQ

2、获取 Matcher 对象:创建匹配器,将给定的输入与模式进行匹配

(1)matcher(CharSequence input)

调用该方法返回一个 Matcher 对象 matcher(匹配对象),参数 input 用于给出 matcher 药检索的 String 对象

//  原信息
String s = "这个:76.8元,那个167.38元,最后:123.32元;";

//  正则表达式
String regex = "[0-9.]+";

//  1、模式对象:将给定的正则表达式编译成一个模式
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
		
//	2、匹配对象:创建匹配器,将给定的输入与模式进行匹配
Matcher matcher = pattern.matcher(s);
System.out.println("匹配对象:" + matcher);

3、通过以上两个步骤

可以进行对匹配对象的各种方法的调用来检索字符串序列

(1)public boolean find()

寻找 input(输入的字符串序列) 和 regex(正则表达式) 匹配的下一子序列,成功返回 true ,此时 matcher 再调用 find() 方法时,就会从上一次匹配模式成功的子序列后寻找下一个匹配模式的子字符序列,另外:

  • 调用 start() 方法和 end() 方法:获取该子字符序列的开始位置和结束位置;
  • 调用 group() 方法:返回本次检索到的匹配模式的子字符序列。

(2)public boolean matches()

判断 input 是否完全和 regex 匹配。

(3)public boolean lookingAt()

判断从 input 的开始位置是否有和 regex 匹配的子字符序列。

(4)public boolean find(int start)

判断 input 从参数 start 指定位置开始是否有和 regex 匹配的子字符序列,start == 0则和 lookingAt() 方法的功能相同。

(5)public String replaceAll(String replacement)

返回一个将匹配模式的子字符序列全部替换为 replacement 指定的字符序列所得到的 String 对象(input 本身实体不变)。

(6)public String replacFirst(String replacement)

返回一个将匹配模式的子字符序列中的第一个匹配的子字符序列替换为参数 replacement 指定的字符序列所得到的 String 对象。

举例

//  原信息
String s = "这个:76.8元,那个167.38元,最后:123.32元;";

//  正则表达式
String regex = "[0-9.]+";

//  1、模式对象:将给定的正则表达式编译成一个模式
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
System.out.println("模式对象:" + pattern);

//	2、匹配对象:创建匹配器,将给定的输入与模式进行匹配
Matcher matcher = pattern.matcher(s);
System.out.println("匹配对象:" + matcher);

double sum = 0;
while (matcher.find()) {
	//  3、获取匹配的字符并赋值
	String item = matcher.group();
	System.out.println(item);
	sum += Double.parseDouble(item);
}
System.out.println("账单总价格:" + sum);

结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 如何使用BeanUtils.copyProperties进行对象之间的属性赋值

    如何使用BeanUtils.copyProperties进行对象之间的属性赋值

    这篇文章主要介绍了使用BeanUtils.copyProperties进行对象之间的属性赋值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Spring Cache手动清理Redis缓存

    Spring Cache手动清理Redis缓存

    这篇文章主要介绍了Spring Cache手动清理Redis缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Mybatis-plus apply函数使用场景分析

    Mybatis-plus apply函数使用场景分析

    Mybatis-plus 里面的 apply方法 是用于拼接自定义的条件判断,自定义时间查询,根据传进来的开始日期,查询所有该日期是数据,但是数据库中保存是时间,所以需要使用apply查询方式并格式化,这篇文章给大家介绍Mybatis-plus apply函数使用,感兴趣的朋友一起看看吧
    2024-02-02
  • Maven项目启动报错error in opening zip file的解决方案

    Maven项目启动报错error in opening zip file的解决方

    这篇文章主要介绍了Maven项目启动时常见的`errorinopeningzipfile`错误,分析了其根本原因在于JAR文件损坏,文章提供了多种解决方法,包括删除损坏的JAR文件、清理本地仓库、检查磁盘错误、手动下载等,需要的朋友可以参考下
    2025-10-10
  • ConcurrentHashMap线程安全及实现原理实例解析

    ConcurrentHashMap线程安全及实现原理实例解析

    这篇文章主要介绍了ConcurrentHashMap线程安全及实现原理实例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • IDEA搭建配置Java Web项目的详细步骤

    IDEA搭建配置Java Web项目的详细步骤

    这篇文章详细介绍了如何使用IDEA创建和配置JavaWeb项目,包括项目结构设置、WEB-INF目录和jsp文件的创建,以及Tomcat的配置,是Java初学者的实用指南,需要的朋友可以参考下
    2024-10-10
  • Java关键字static的6个常见误区及解决方法

    Java关键字static的6个常见误区及解决方法

    文章主要讲述了Java中static关键字的常见误解和误区,包括static属于类而非对象、静态方法不能被重写、静态方法中不能使用this或super、静态代码块只会执行一次、static变量并非天生线程安全以及要在声明或静态块中初始化静态变量等内容,需要的朋友可以参考下
    2026-05-05
  • SpringBoot中 Gzip 压缩的两种开启方式:GeoJSON 瘦身实战指南

    SpringBoot中 Gzip 压缩的两种开启方式:GeoJSON 瘦身实战指南

    在Spring Boot中为GeoJSON数据启用Gzip压缩,主要有两种方式:全局配置和局部配置,这篇文章给大家介绍SpringBoot中Gzip压缩的两种开启方式:GeoJSON 瘦身实战指南,感兴趣的朋友跟随小编一起看看吧
    2026-07-07
  • Tomcat版本与Java版本的关系及说明

    Tomcat版本与Java版本的关系及说明

    这篇文章主要介绍了Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • SpringBoot实用小技巧之如何动态设置日志级别

    SpringBoot实用小技巧之如何动态设置日志级别

    这篇文章主要给大家介绍了关于SpringBoot实用小技巧之如何动态设置日志级别的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SpringBoot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04

最新评论