JavaSE——正则表达式(1/2):概述、初步使用(普通方法,正则表达式)、书写规则(字符类,预定义字符,数量词,其他,特殊案例)

devtools/2024/10/21 5:59:18/

目录

概述

初步使用

普通方法

正则表达式

书写规则

字符类

预定义字符

数量词

其他

特殊案例


概述

正则表达式

  • 就是由一些特定的字符组成,代表的是一个规则。

作用一:用来校验数据格式是否合法  (更简单、更便捷)

作用二:在一段文本中查找满足要求的内容

String提供的一个陪陪正则表达式的方法

public boolean matches(String regex)        判断字符串是否匹配正则表达式,匹配返回true,不匹配返回false。

初步使用

完成需求:

  • 校验QQ号码是否正确,要求全部是数字,长度是(6-20)之间,不能以0开头。

普通方法

java">public class InitialUseOne {public static void main(String[] args) {System.out.println(checkQQ("2668834948"));}public static boolean checkQQ(String qq){//1.判断QQ号码是否为null,是否以0开头,同时可以控制号码长度在6-20之间if(qq == null || qq.startsWith("0")|| qq.length() < 6 || qq.length() > 20){return false;}//2.判断是否全都是数字for (int i = 0; i < qq.length(); i++) {//根据索引提取当前位置处的字符char ch = qq.charAt(i);//判断ch存储的字符,如果不是数字,则QQ号码不合法。if(ch < '0' || ch > '9'){return false;}}//3.每个字符都判断完,则说明QQ号码合法return true;}
}

运行结果:

正则表达式

java">package user.RegularExpression;public class InitialUseTwo {public static void main(String[] args) {System.out.println(checkQQ("2668834948"));}public static boolean checkQQ(String qq){return qq != null && qq.matches("[1-9]\\d{5,19}");
// [1-9]代表第一位只能是1-9的数字,\\d代表全部为数字,{5,19}表示后面的位数为5到10位}
}

运行结果:

书写规则

正则表达式中,一些基本符号的含义:

  • ^        :取反
  • &&     :交集,不能写单个的&
  • \         :转义字符
  • |         :写在括号外面表示并集
  • []        :里面的内容出现一次

字符类

格式含义
[abc]只能a,b,或c

[^abc]

除了a,b,c之外的任何字符
[a-zA-Z]a到z,A到Z,包括(范围)
[a-d[m-p]]a到d,或m到p
[a-z&&[def]]d,e,或f(交集)
[a-z&&[^bc]]a到z,除了b和c(等同于[ad-z])
[a-z&&[^m-p]]a到z,除了m到p(等同于[a-lq-z])

预定义字符

(只匹配单个字符)

格式含义
.任何字符(注意:\n回车符号不匹配)
\d一个数字:[0-9]
\D非数字:[0-9]
\s一个空白字符
\S非空白字符:[^\s]
\w任何单词字符:[a-zA-Z_0-9]
\W[^\w]一个非单词字符

数量词

格式含义
X?X出现一次或θ次
X*X出现零次或多次
X+X出现一次或多次
X{n}X出现正好n次
X{n, }X出现至少n次
X{n,m}X出现至少n次但不超过m次

其他

格式含义
(?i)忽略后面字符的大小写
a((?i)b)c只忽略b的大小写
()分组

特殊案例

忽略大小写:

java">public class Test {public static void main(String[] args) {System.out.println("abc".matches("(?i)abc"));//匹配结果为trueSystem.out.println("ABC".matches("(?i)abc"));//匹配结果为trueSystem.out.println("aBc".matches("a((?i)b)c"));//匹配结果为trueSystem.out.println("ABc".matches("a((?i)b)c"));//匹配结果为false}
}

运行结果:

"或"的运用

需求:么是3个小写字母,要么是3个数字

java">public class Test {public static void main(String[] args) {System.out.println("123".matches("\\d{3}|[a-z]{3}"));//匹配结果为trueSystem.out.println("abc".matches("\\d{3}|[a-z]{3}"));//匹配结果为trueSystem.out.println("aAc".matches("\\d{3}|[a-z]{3}"));//匹配结果为falseSystem.out.println("123abc".matches("\\d{3}|[a-z]{3}"));//匹配结果为false}
}

运行结果:

分组

需求二:必须是“我爱”开头,中间可以是至少一个“编程”,最后至少是1个“666”

java">public class Test {public static void main(String[] args) {System.out.println("我爱编程编程666666".matches("我爱(编程)+(666)+"));//匹配结果为trueSystem.out.println("我爱编程编程6666666666".matches("我爱(编程)+(666)+"));//匹配结果为false}
}


END


学习自:黑马程序员——JavaSE课程


http://www.ppmy.cn/devtools/32448.html

相关文章

uniapp 禁止截屏(应用内,保护隐私)插件 Ba-ScreenShot

禁止截屏&#xff08;应用内&#xff0c;保护隐私&#xff09; Ba-ScreenShot 简介&#xff08;下载地址&#xff09; Ba-ScreenShot 是一款uniapp禁止应用内截屏的插件&#xff0c;保护隐私&#xff0c;支持禁止截屏、放开截屏 截图展示 也可关注博客&#xff0c;实时更新最…

004 springCloudAlibaba Gateway

文章目录 gatewayServerGatewayServerApplication.javaServletInitializer.javaapplication.yamlpom.xml orderServerOrderController.javaProductClient.javaOrderServerApplication.javaServletInitializer.javaapplication.yamlpom.xml productServerProductController.java…

三维SDMTSP:GWO灰狼优化算法求解三维单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)

一、单仓库多旅行商问题 多旅行商问题&#xff08;Multiple Traveling Salesman Problem, MTSP&#xff09;是著名的旅行商问题&#xff08;Traveling Salesman Problem, TSP&#xff09;的延伸&#xff0c;多旅行商问题定义为&#xff1a;给定一个&#x1d45b;座城市的城市集…

组队竞赛和删除公共字符

这里附上两个题目的链接 题目一&#xff1a;删除公共字符_牛客题霸_牛客网 (nowcoder.com) 题目二&#xff1a;组队竞赛_牛客笔试题_牛客网 (nowcoder.com) 第一题 分析&#xff1a; 当我们看见这个题目的时候&#xff0c;可以使用传统的暴力查找方式&#xff0c;如判断第一个…

基于php+mysql+html简单图书管理系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、Php、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

FPGA学习笔记(2)——Verilog语法及ModelSim使用

1.1 语法 1、赋值语句 和 < 为阻塞赋值&#xff0c;当该语句结束时&#xff0c;下一个语句才开始执行&#xff0c;串行执行 < 为非阻塞幅值&#xff0c;该语句和整个语句块同时执行&#xff0c;并行执行 1.2 ModelSim使用 1、修改源文件路径&#xff1a;File -> …

探索绘图神器draw.io:打造高效、灵活的图形设计新体验

探索绘图神器draw.io&#xff1a;打造高效、灵活的图形设计新体验 一、引言 在数字化时代&#xff0c;图形设计已经成为众多行业不可或缺的一部分。然而&#xff0c;对于非专业的图形设计师来说&#xff0c;如何快速、高效地完成图形设计任务&#xff0c;一直是一个挑战。今天…

MinIO实现简单文件上传【springboot】

文章目录 引入相关依赖配置application.yml文件编写minio的config文件编写minio的工具类图片文件上传测试 引入相关依赖 <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.6</version></depe…