重学java 72.正则表达式

人长大之后就在频繁地离别,相聚反而时日无多

                                                                —— 24.6.17

一、正则表达式的概念及演示

1.概述

        正则表达式是一个具有特殊规则的字符串

2.作用:校验  

3.String中有一个校验正则的方法:

        boolean matches(String regex) —— 校验字符串是否符合指定的regex的规则

4.案例:

        校验QQ号(不能以0开头,必须都是数字,必须是5-15位的)

package S104Regex;import java.util.Scanner;public class Demo293Regex {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String data = sc.next();boolean b = method01(data);System.out.println("result: " + b);String data1 = sc.next();boolean c = method02(data1);System.out.println("result: " + c);}private static boolean method02(String data) {// 1-9数字开头、都是数字0-9,出现4到14次boolean result = data.matches("[1-9][0-9]{4,14}");return result;}private static boolean method01(String data) {// 不能是0开头的 startsWith开头第一个元素if (data.startsWith("0")){return false;}// 必须都是数字char[] chars = data.toCharArray();for (char aChar : chars) {if(aChar<'0' || aChar>'9'){return false;}}// 必须是5-15位if(data.length()<5 || data.length()>15){return false;}// 以上条件都不满足就返回truereturn true;}
}

二、正则表达式的具体使用

1.正则表达式—字符类

        java.util.regex.Pattern:正则表达式的编译表示形式。

        正则表达式-字符类:[]表示一个区间,范围可以自己定义

        语法示例:

                1.[abc]:代表a或者b,或者c字符中的一个。        

                2.[^abc]:代表除a,b,c以外的任何字符。

                3.[a-z]:代表a-z的所有小写字符中的一个。

                4.[A-Z]:代表A-Z的所有大写字符中的一个。

                5.[0-9]:代表0-9之间的某一个数字字符

                6.[a-zA-Z0-9]:代表a-z或者A-Z或者0-9之间的任意一个字符

                7.[a-dm-p]:a到d或m到 p之间的任意一个字符

        示例:

import java.util.Scanner;public class Demo294Regex02 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String next = sc.next();method01(next);}// 字符类private static void method01(String str){// 1.验证字符串是否以h开头,d结尾,中间是aeiou的某一个字符boolean matches = str.matches("[h][aeiou][d]");System.out.println("result = " + matches);// 2.验证字符串是否以h开头,d结尾,中间不是aeiou的某个字符boolean matches2 = str.matches("[h][^aeiou][d]");System.out.println("result2 = " + matches2);// 3.验证字符串是否是开头a-z的任意一个小写字母,后面跟adboolean matches3 = str.matches("[a-z][a][d]");System.out.println("result3 = " + matches3);}
}

2.正则表达式—逻辑运算符

import java.util.Scanner;public class Demo295RegexLogic {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String next = sc.next();method01(next);}private static void method01(String str) {// 1.要求字符串是小写字母开头,并且字符不能以【aeiou】开头,后面跟adboolean result1 = str.matches("[[a-z]&&[^aeiou]][a][d]");System.out.println("result1 = " + result1);// 2.要求字符是aeiou的某一个字符开头,后面跟adboolean result2 = str.matches("[aeiou][a][d]");System.out.println("result2 = " + result2);}
}

3.正则表达式—预定义字符

        语法示例:

                1.”.”:匹配任何字符。(重点) 不能加[]

                2."\\d":任何数字[0-9]的简写;(重点)

                3."\\D":任何非数字[^0-9]的简写;

                4.“\\s”空白字符:[ \t\n\x0B\f\r ]的简写

                5."\\S": 非空白字符:[^\s] 的简写

                6."\\w":单词字符:[a-zA-Z_0-9]的简写(重点)

                7."\\W":非单词字符:[^\w]

示例

import java.util.Scanner;public class Demo296RegexPreDefine {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String next = sc.next();method01(next);}private static void method01(String next) {// 1.验证字符串是否为3位数字的boolean matches1 = next.matches("[0-9][0-9][0-9]");System.out.println("matches11 " + matches1);boolean matches2 = next.matches("\\d\\d\\d");System.out.println("matches12 " + matches2);// 2.验证手机号:1开头,第二位是3、5、8,剩下的都是0-9的数字boolean matches3 = "15546565656".matches("[1][358]\\d\\d\\d\\d\\d\\d\\d\\d\\d");System.out.println("matches13 " + matches3);}
}

4.正则表达式—数量词

        语法示例:x代表字符

        1.X?:x出现的数量为 0次或1次

        2.x*:x出现的数量为 0次到多次 任意次        

        3.X+:x出现的数量为 1次或多次 x>=1次

        4.x{n} :x出现的数量为 恰好n次 x=n次

        5.x{n}:x出现的数量为 至少n次x>=n次 x{3,}

        6.x{n,m}: x出现的数量为 n到m次(n和m都是包含的)        n=<X<=m

        示例

import java.util.Scanner;public class Demo297RegexCount {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String next = sc.next();method01(next);}private static void method01(String str){// 验证手机号:1开头,第二位是3、5、8,剩下的都是0-9的数字boolean matches = str.matches("[1][358]\\d{9}");System.out.println("matches= "+matches);}
}

5.正则表达式—分组括号

        正则表达式-分组括号()        (abc)

import java.util.Scanner;public class Demo298Regexkuohao {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String next = sc.next();method01(next);}private static void method01(String next) {// 校验abc可以出现任意次boolean matches = next.matches("(abc)*");System.out.println("Matches: " + matches);}
}

三、String中和正则相关的方法

boolean matches(string regex)        判断字符串是否匹配给定的正则表达式。

String[] split(String regex)         根据给定正则表达式的匹配拆分此字符串。

String replaceAll(string regex,String replacement)        把满足正则表达式的字符串,替换为新的字符

import java.util.Arrays;public class Demo299RegexString {public static void main(String[] args) {String next = "abc hahah  hehe   hdjalkms";method01(next);String next2 = next.replaceAll(" +", "h");//String replaceAll(string regex,String replacement)  把满足正则表达式的字符串,替换为新的字符method01(next2);}private static void method01(String next) {// String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。String[] arr1 = next.split(" +");System.out.println(Arrays.toString(arr1));}
}

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

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

相关文章

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【10】【仓库管理】【分布式基础篇总结】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【10】【仓库管理】【分布式基础篇总结】 采购简要流程采购单采购人员的接口分布式基础篇总结参考 采购简要流程 采购单 可以搞个枚举&#xff1a; public class WareConstant {public enu…

Langchain-chatchat: Langchain基本概念

一、Langchain的chain是指的是什么&#xff1f; langchain字面意思是长长的链子&#xff0c;那么chains 链子具体指的是什么呢&#xff1f; 智普AI助手的回答如下&#xff1a; LangChain 中的 “chain” 是指链式操作或者序列化操作&#xff0c;它是一种将多个任务或操作按照…

【有用】docker在windows下使用详情

在Windows下安装和使用Docker可以按照以下步骤进行&#xff1a; 安装 Docker Desktop 系统要求 • Windows 10 64-bit: Pro, Enterprise, or Education (1607 Anniversary Update, Build 14393 or later) • Windows 11 64-bit: Pro, Enterprise, or Education • Windows 10 …

DPDK环境配置

DPDK环境配置 DPDK&#xff08;Data Plane Development Kit&#xff09;是一个开源的软件框架&#xff0c;最初由Intel开发&#xff0c;旨在提升数据包处理性能&#xff0c;尤其是在Intel架构的处理器上。它允许开发者在用户空间&#xff08;user space&#xff09;而不是传统…

Excel批量删除括号里内容,帮你轻松应对!

某次&#xff0c;刘小生从系统导出的人员信息中&#xff0c;“姓名”字段信息中包含了工号信息&#xff0c;需要将“原姓名”中的“工号、括号”信息删除&#xff0c;如果一个一个删除工作量很大&#xff0c;刘小生想到可以用“通配符*”批量替换&#xff0c;解放双手&#xff…

飞天茅台酒的惊魂五日

“电商百亿补贴修改发货规则”导致黄牛资金压力剧增&#xff0c;资金压力之下部分黄牛择低价甩卖&#xff0c;其他求货的酒行、大酒商则选择观望&#xff0c;价格下行压力最终扩散&#xff0c;造成整个回收市场踩踏&#xff0c;价格急速下跌。 不到半年时间&#xff0c;飞天茅台…

初学者必看的web前端开发学习路线,干货满满!

初学者必看的web前端开发学习路线,干货满满&#xff01; 随着互联网的深入发展,前端工程师这个岗位在市场上的需求&#xff0c;薪资也是很可观的。前端很火&#xff0c;想自学前端的人也很多。包括一些学生、上班族、以前的UI&#xff0c;java&#xff0c;或完全零基础&#xf…

免费无版权可商用资源|自媒体创业者、设计师、电商商家必备

1.前言 小伙伴们大家好&#xff0c;欢迎来到天夏Ai&#xff0c;这里专注于分享人工智能精品资源&#xff1a;Ai副业项目、Ai效率神器&#xff01;和你一起共享Ai信息&#xff0c;分享Ai副业项目资源&#xff0c;开启智能副业赚钱新时代&#xff01; 今天为大家分享免费无版权可…

Web 前端开发趋势

前端开发领域&#xff0c;新技术、开发趋势、库和框架不断涌现&#xff0c;变化并不陌生。最近发生的一些事件正在改变开发人员构建网站和 Web 应用的方式 虽然跟上前端生态系统的变化可能具有挑战性&#xff0c;但作为专业人士&#xff0c;保持技能的更新有助于我们开展工作。…

PBC密码库安装及使用教程

文章目录 1.PBC库介绍2.PBC库安装3.PBC库使用4.相关API4.1 配对的初始化和释放4.2 元素的初始化和释放4.3 元素的赋值4.4 哈希4.5 元素的常用运算4.6 元素的幂运算4.7 元素的比较4.8 从群中随机选取一个元素&#xff08;常用&#xff09;4.9 配对的运算4.10 小结 5.Some exampl…

RocketMQ源码学习笔记:NameServer启动流程

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Overview2、NameServer启动流程2.1、总结2.2、NamesrvController2.2.1、主要职责2.2.2、关键的成员变量2.2.3、核心代码2.2.4、值得注意的点 1、Overview NameServer主要就做三件事 Nam…

vue3的基本使用方法

【 vue3实例 】 【 0 】对象、方法和属性 对象&#xff08;Object&#xff09;&#xff1a; 对象是编程中的一个数据结构&#xff0c;它可以包含多种数据类型&#xff0c;包括数字、字符串、布尔值、数组、其他对象等。对象通常由一系列属性和方法组成。在面向对象编程&…

超高清图像生成新SOTA!清华唐杰教授团队提出Inf-DiT:生成4096图像比UNet节省5倍内存。

清华大学唐杰教授团队最近在生成超高清图像方面的新工作&#xff1a;Inf-DiT&#xff0c;通过提出一种单向块注意力机制&#xff0c;能够在推理过程中自适应调整内存开销并处理全局依赖关系。基于此模块&#xff0c;该模型采用了 DiT 结构进行上采样&#xff0c;并开发了一种能…

【Linux】进程_8

文章目录 五、进程10. 进程等待阻塞等待和非阻塞等待 11. 进程程序替换 未完待续 五、进程 10. 进程等待 上一篇我们知道了 wait 和 waitpid 函数都有一个 status 参数&#xff0c;这个参数是什么呢&#xff1f;这个参数其实就是进程的返回结果&#xff0c;当子进程结束的时候…

MySQL-----JOIN语句之内连接

在我们使用MySQL进行项目的开发过程中&#xff0c;仅仅对一张表进行操作是远远不够的&#xff0c;真正的应用中经常需要从多个数据表中读取数据。我们在使用的过程中&#xff0c;尝尝通过 SELECT, UPDATE 和 DELETE 语句配合使用 JOIN 来联合多表查询。 JOIN 分类 INNER JOIN…

【5.x】ELK日志分析、集群部署

ELK日志分析 一、ELK概述 1、ELK简介 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将ElasticSearch、Logstash和Kiabana三个开源工具配合使用&#xff0c;完成更强大的用户对日志的查询、排序、统计需求。 一个完整的集中式日志系统&#xff0c;需要包含以下几个主…

中国星网时空信息集团春招Offer面经

本文介绍2024届春招中&#xff0c;中国卫星网络集团有限公司下属中国时空信息集团有限公司中&#xff0c;业务助理岗位1场面试的基本情况、提问问题等。 2024年04月投递了中国卫星网络集团有限公司下属中国时空信息集团有限公司中的业务助理岗位&#xff0c;所属部门为运营中心…

基于jeecgboot-vue3的Flowable流程-所有任务

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 这个部分主要讲所有任务的功能 1、主要列表界面如下&#xff1a; <template><div class"p-2"><!--查询区域--><div class"jeecg-basic-table-form-…

艾伦脑图谱(Allen Brain Atlas)

文章目录 一、艾伦研究所&#xff08;Allen Institute&#xff09;1.1、艾伦脑图谱&#xff08;Allen Brain Map&#xff09;1.1.1、艾伦&#xff08;小鼠大脑&#xff09;通用坐标框架&#xff08;Allen Mouse Brain Common Coordinate Framework&#xff0c;CCFv3&#xff09…

Elasticsearch-使用Logstash同步Mysql

1.安装logstash es服务器版本必须和logstash版本一致 7.9.2 在/usr/local/src/下新建logstash文件夹&#xff0c;解压 下载logstash后查看是否安装成功&#xff0c;在logstash的bin目录下输入指令&#xff1a; ./logstash -e input { stdin { } } output { stdout {} }2.my…