IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java: Pattern 类与 Matcher 类 -> 正文阅读

[Java知识库]Java: Pattern 类与 Matcher 类

? ? ? ? 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);

结果:

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:19:04  更:2021-09-23 11:21:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 18:31:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码