关于正则中的Pattern和Matcher的使用

关于正则中的Pattern和Matcher的使用

    • 1 简介
    • 2 语法
    • 3 案例

在项目中, 经常需要对请求的数据进行格式,内容校验, 而使用正则表达式, 比较简单优雅实现校验功能. 故记录一下正则中Pattern和Matcher的使用.

1 简介

​ java.util.regex包下的Pattern和Matcher都是Java中用于正则表达式匹配的类. Pattern是表示一个正则表达式, Matcher表示一个字符串通过正则表达式匹配的部分, 主要用来对字符串进行查询匹配和替换.

​ 即Pattern主要是将正则表达式编译生成一个Pattern对象. 而Matcher主要是将Pattern对象和待校验的字符串进行匹配操作.

2 语法

Pattern类

    public class Pattern {  // 静态方法  创建Pattern对象  构造私有不能直接创建public static Pattern compile(String regex);// 用于分隔字符串,并返回一个String[]public String[] split(CharSequence input);// 静态方法  快速匹配字符串,只匹配一次,匹配全部字符串public static boolean matches(String regex, CharSequence input);// 创建Matcher  构造缺省, 外面不可直接创建public Matcher matcher(CharSequence input);}

Matcher类

   public class Matcher {// 对整个字符串进行匹配,所有字符串都匹配了 才返回truepublic boolean matches();// 对字符串进行匹配,匹配到字符串 就返回truepublic boolean find();// 对最前面的字符串进行匹配,即匹配到的字符串在最前面才返回truepublic boolean lookingAt();// 返回匹配到的子字符串public String group();// 返回匹配到的子字符串在字符串中的索引位置public int start();// 返回匹配到的子字符串的最后一个字符在字符串中的索引位置public int end();// 返回有多少组public int groupCount();// group()重载方法  获取分组后的数据public String group(int group);// start()重载方法 获取分组后的数据public int start(int group);// end()重载方法 获取分组后的数据public int end(int group);}

3 案例

public class MyPatternDemo {private static Pattern NUMBER_PATTERN = Pattern.compile("\\d+");private static Pattern NUMBER_PATTERN2 = Pattern.compile("用电时间:(..-..)_(..-..),电费:(\\d*\\.?\\d*)");public static void main(String[] args) {String str1 = "abcd12345678";// Pattern方法// split   [abcd]System.out.println(Arrays.toString(NUMBER_PATTERN.split(str1)));// matches  trueSystem.out.println(Pattern.matches("\\d", "1"));// matcherMatcher matcher = NUMBER_PATTERN.matcher(str1);System.out.println("------------------------");// Matcher方法String str2 = "abcd12345678";String str3 = "12345678";Matcher matcher2 = NUMBER_PATTERN.matcher(str2);Matcher matcher3 = NUMBER_PATTERN.matcher(str3);// matchesSystem.out.println(matcher2.matches());System.out.println(matcher3.matches());System.out.println("------------------------");// 结果  false   true// findString str4 = "abcd123";String str5 = "123";Matcher matcher4 = NUMBER_PATTERN.matcher(str4);Matcher matcher5 = NUMBER_PATTERN.matcher(str5);System.out.println(str4 + matcher4.find());System.out.println(str5 + matcher5.find());System.out.println("------------------------");// 结果  true   true// lookingAtSystem.out.println(matcher2.lookingAt());System.out.println(matcher3.lookingAt());System.out.println("=======================");// 结果  false   true// group start endString str6 = "222";Matcher matcher6 = NUMBER_PATTERN.matcher(str6);// 匹配整个字符串matcher6.matches();// 222  0 2System.out.println(matcher6.group());System.out.println(matcher6.start());System.out.println(matcher6.end());System.out.println("========分割线=============");String str7 = "222aaa333";Matcher matcher7 = NUMBER_PATTERN.matcher(str7);while(matcher7.find()) {System.out.println(matcher7.group());System.out.print("start:"+matcher7.start());System.out.println(" end:"+matcher7.end());}/*222start:0 end:3333start:6 end:9*/String str = "用电时间:02-01_03-01,电费:130.0";Matcher matcher8 = NUMBER_PATTERN2.matcher(str);while(matcher8.find()){System.out.println("matcher.group(0) "+matcher8.group(0));//得到第0组——整个匹配System.out.println("matcher.group(1) "+matcher8.group(1));//得到第一组与第一个括号中对应中值匹配System.out.println("matcher.group(2) "+matcher8.group(2));//得到第二组与第二个括号中对应中值匹配System.out.println("matcher.group(3) "+matcher8.group(3));//得到第三组与第三个括号中对应中值匹配}/*  matcher.group(0) 用电时间:02-01_03-01,电费:130.0matcher.group(1) 02-01matcher.group(2) 03-01matcher.group(3) 70.0*/}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/698505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring启动生命周期

Spring Boot 生命周期详解 Spring Boot 应用程序的生命周期包含几个阶段,每个阶段都有特定的事件和钩子,允许开发者在应用程序的不同生命周期阶段插入自定义逻辑。以下是 Spring Boot 生命周期的主要阶段和对应的事件: 准备阶段:…

【Docker实操】部署php项目

概述 最终达成的容器部署结构和原理如下图: 一、获取nginx、php官方镜像 docker pull nginx //拉取nginx官方镜像 docker pull php:7.4-fpm //拉取php官方镜像需要获取其他可用的php版本,可以上【docker hub】搜索【php】,所有的【xxx-fp…

【工具】阿莫智能设备之脱机烧录器K202C-1

注意,本文档仅仅是介绍烧录器的资料构成,并非烧录器的说明书,详细请看各对说明书及视频。 1. 资料图解 首先需要下载资料,通常稳定发布版本可以从 www.amomcu.cn 下载, 也可以向我们客服获取最新版本, 获…

浅谈redis之SDS

SDS 什么是SDSSDS结构len的作用free的作用buf的作用简单示例 SDS机制重新分配内存分配内存机制小于1MB情况大于1MB情况为什么这样分配 惰性释放内存 什么是SDS SDS:全名 simple dynamic string,意为简单动态字符串,作为redis里的一种数据结构…

六.生成makefile文件 并基于makefile文件编译opencv

1.点击【Generate】 生成makefile文件 2.进入目录下编译opencv源码,mingw32-make -j 8 3..编译出现报错 4.取消[WITH_OPENCL_D3D11_NV]选项,再次【configure】【generate】 然后再次编译:mingw32-make -j 8

科技守护大唐遗宝,预防保护传承千年

​ 一、“大唐遗宝——何家村窖藏出土文物展” 陕西历史博物馆的“唐朝遗宝——何家村窖藏出土文物展”算得上是博物馆展览的典范。展览不仅在于展现了数量之多、等级之高、种类之全,更在于对唐朝历史文化的深入揭露。 走入大唐财产展厅,好像穿越千年前…

解决TCP中Bind failed烦恼

文章目录 概要样例代码 概要 当第一次运行服务端时正常,第二次运行时出现Bind failed问题。 在实际使用中,如果您尝试启动一个服务端程序并且遇到了 “Bind failed” 的错误信息,这通常意味着尝试绑定(bind)的端口已…

Boss直聘聊天问答

主动打招呼常用语: 1.您好,我看到贵公司的招聘需求很符合我的技术栈,方便约个面试聊一聊嘛? 2.我叫郭治江,2022年毕业,物联网工程专业,目前从事Java开发工作已经三年了,上家公司是…

推理任务稳定提点大揭秘:力大砖飞背后的科学

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

GB/T 17639-2023 长丝纺粘针刺非织造土工布检测

长丝纺粘针刺非织造土工布是指以聚酯或聚丙烯为原料,经纺丝、铺网、针刺加固而成的长丝纺粘针刺非织造布。 GB/T 17639-2023 长丝纺粘针刺非织造土工布测试项目: 测试要求 测试标准 纵横向抗拉强度 GB/T 15788 纵横向最大负荷下伸长率 GB/T 15788 …

Nginx相关命令

进入nginx程序目录,使用cmd在本目录下打开, 启动nginx:使用命令start nginx 本地重启nginx:nginx -s reload 停止:nginx -s stop 或者 nginx.exe -s quit 查看Nginx版本:nginx -v

功率MOSFET体二极管的连续载流能力

功率MOSFET体二极管的连续载流能力 1.概述2.MOSFET 漏源电压限制3.体二极管电流能力4.计算案例5.降额 tips:资料主要来自网络,仅供学习使用。 在电力电子领域或者在大功率应用场境下,我们经常会用到开关管功率MOSFET以及其内部的二极管。 那…

Nginx是什么?怎么用?

Nginx介绍 Nginx (读作 “engine-x”) 是一款高性能的HTTP和反向代理服务器,同时也可用作IMAP/POP3/SMTP代理服务器。由俄罗斯程序员Igor Sysoev开发,首次公开发布于2004年。Nginx以其稳定性、高性能和低内存消耗闻名,尤其擅长处理静态文件、…

2.23学习总结

铅球杯https://www.luogu.com.cn/problem/B3911 题目描述 蓝边铅球组织了“铅球杯”数据标注大赛。为了实现 Au 大满贯的宏大征途,LeAuingZ 报名参加了比赛。 蓝边铅球给出了 �N 个 int 类型变量的名字及其值,并要求 LeAuingZ 对 &#xfffd…

安全生产:AI视频智能分析网关V4如何应用在企业安全生产场景中?

随着科技的不断进步,视频智能分析技术在安全生产领域中的应用越来越广泛。这种技术通过计算机视觉和人工智能算法,可以对监控视频进行自动分析和处理,以实现多种功能,如目标检测、行为识别、异常预警等。今天我们以TSINGSEE青犀AI…

Boom 3D for Mac 破解版(3D环绕立体声音效增强软件)2.0.2中文支持M3

Mac上想要听一场极致的音乐或看一场畅快淋漓的电影?这些Boom 3D for Mac都可以帮您实现,是一款Mac音效增强工具,可以将二维度的音效转换成三维度,让您彻底的享受一下极致的听觉盛宴! Boom 3D 2.0.2 Mac版主打音乐播放器…

【Rust】——控制流(if-else,循环)

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

centos7 arm服务器编译安装onnxruntime-gpu

前言 ONNX Runtime是适用于Linux,Windows和Mac上ONNX格式的机器学习模型的高性能推理引擎,但在arm服务器上,onnxruntime只有CPU版的,GPU版的没有,因此需要自行去编译GPU版本的才可以。 环境准备 1、python3.8 2、cmake:2.26.0版本以上,可以直接下载aarch64版本的进行…

[VulnHub靶机渗透] HA: Narak

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

洛谷 P2032 扫描 (Java)

洛谷 P2032 扫描 (Java) 传送门:P2032 扫描 题目: 扫描 题目描述 有一个 1 n 1 \times n 1n 的矩阵,有 n n n 个整数。 现在给你一个可以盖住连续 k k k 个数的木板。 一开始木板盖住了矩阵的第 1 ∼ k 1 \sim k 1∼k 个数&#x…