Java:正则表达式讲解加举例,简洁易懂
正则表达式定义:
由一些特定的字符组成,代表的是一个规则。
作用:1.校验数据是否合法。2.可以在一段文本中查找满足要求的内容。
先自己写一个方法去校验qq号,比较与正则表达式的区别:
正则表达式的代码暂时可以不去理解。
package com.itheima.d2_regex;
/*
* 需求:校验qq号是否正确,要求全部是数字,长度6-20之间,qq号不能以0开头。
*/
public class RegexTest1 {public static void main(String[] args) {System.out.println(checkQQ(null));//falseSystem.out.println(checkQQ("12345697"));//trueSystem.out.println(checkQQ("45158481d22"));//falseSystem.out.println("-------------------------------------");System.out.println(checkQQ(null));//falseSystem.out.println(checkQQ("12345697"));//trueSystem.out.println(checkQQ("45158481d22"));//false}//正则表达式校验 暂时可以不用理解其中的代码 明显正则表达式更简洁public static boolean checkQQ1(String qq){return qq != null && qq.matches("[1-9]\\d{5,19}");}//自己写方法去判断public static boolean checkQQ(String qq){//判断qq号码是否为null,长度符合要求,是否为以0开头。if (qq == null || qq.startsWith("0") || qq.length() < 6 || qq.length() > 20){return false;}//判断qq号中全是数字for (int i = 0; i < qq.length(); i++) {char ch = qq.charAt(i);//根据索引提取字符(charAt())if (ch < '0' || ch > '9'){return false;}}return true;}
}
明显正则表达式更简洁更好用。
正则表达式深度解析:
String类提供了一个匹配正则表达式的方法:
public boolean matches(String regex) //判断字符串是否匹配正则表达式
讲解加举例全在里面:
package com.itheima.d2_regex;public class RegexTest2 {public static void main(String[] args) {//1.字符类(只能匹配单个字符) [abc] 3选1 [^abc] 不能是abc其一 [a-zA-Z] 只能是a-z A-Z 之间的字符//[a-z&&[^bc]] a到z,除了bc//举例:System.out.println("b".matches("[a-zA-Z]"));//true//2.预定义字符(只能匹配单个字符) . \d \D \s \S \w \W 大写跟小写的区别:取反// . 匹配任意字符 \d 0-9 \s 代表一个空白字符 \w 代表[a-zA-Z_0-9],包含大小写,下划线,0-9之间的数字。//举例://在Java中,\是有特殊用途的,例如特殊字符:\n \t ,这是把\n \t当成整体一个字符看System.out.println("1".matches("\\d"));//这里我们希望\就是\,而不是整体\d,就需要转义字符\ 转义单个反斜杠//这里如果你用\d,会解析成整体,但是没有\d的具体意义,所以要用(第一个反斜杠)\把(第二个反斜杠) \ 转义,这样\d就不会当成整体了。//输出true//3.数量词: ? 代表0次或者一次 * 代表0次或者多次 + 代表 1次或者多次 {n} 代表正好n次 {n,} 代表>=n次 {n,m} 代表>=n,<=m次//举例:System.out.println("abc232d".matches("\\w{3,9}"));//true//4.其他几个常用的符号:(?i)忽略大小写,固定写法 或:| 分组:()System.out.println("ABC".matches("(?i)abc"));//trueSystem.out.println("Abc".matches("a((?i)b)c"));//false 这个忽略大小写只针对于b而言,注意看范围即可。//需求:必须是“我爱”开头,中间至少有一个“编程”,最后至少一个“666”System.out.println("我爱编程编程666666".matches("我爱(编程)+(666)+"));//true 至少有一次(666)+,加号代表1次或者多次System.out.println("我爱编程编程6666666".matches("我爱(编程)+(666)+"));//false 这里666要成对出现,格式不对,所以false}
}
相关文章:
Java:正则表达式讲解加举例,简洁易懂
正则表达式定义: 由一些特定的字符组成,代表的是一个规则。 作用:1.校验数据是否合法。2.可以在一段文本中查找满足要求的内容。 先自己写一个方法去校验qq号,比较与正则表达式的区别: 正则表达式的代码暂时可以不…...
2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解
2️⃣机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解 个人简介一算法概述二算法思想2.1 KNN的优缺点 三实例演示3.1电影分类3.2使用KNN算法预测 鸢(yuan)尾花 的种类3.3 预测年收入是否大于50K美元 个人简介 🏘️&…...
WordPress顶部管理工具栏怎么添加一二级自定义菜单?
默认情况下,WordPress前端和后台页面顶部都有一个“管理工具栏”,左侧一般就是站点名称、评论、新建,右侧就是您好,用户名称和头像。那么我们是否可以在这个管理工具栏中添加一些一二级自定义菜单呢? 其实,…...
Linux安装ossutil工具且在Jenkins中执行shell脚本下载文件
测试中遇到想通过Jenkins下载OSS桶上的文件,要先在linux上安装ossutil工具,记录安装过程如下: 一、下载安装ossutil,使用命令 1.下载:wget https://gosspublic.alicdn.com/ossutil/1.7.13/ossutil64 2.一定要赋权限…...
Docker命令---搜索镜像
介绍 使用docker命令搜索镜像。 命令 docker search 镜像命令:版本号示例 以搜索ElasticSearch镜像为例 docker search ElasticSearch...
docker使用http_proxy配置代理
钢铁知识库,一个学习python爬虫、数据分析的知识库。人生苦短,快用python。 在内网服务器中,docker经常需要下载拉取镜像,但由于没有网络要么只能手动导入镜像包,又或者通过http_proxy代理到其它服务器下载。 解决方法…...
综述:自动驾驶中的 4D 毫米波雷达
论文链接:《4D Millimeter-Wave Radar in Autonomous Driving: A Survey》 摘要 4D 毫米波 (mmWave) 雷达能够测量目标的距离、方位角、仰角和速度,引起了自动驾驶领域的极大兴趣。这归因于其在极端环境下的稳健性以及出色的速度和高度测量能力。 然而…...
蓝桥杯:1.特殊日期(Java)
题目描述 对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。 请问从1900年1月1日至9999年12月31日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。 例如&…...
服务异步通讯之 SpringAMQP【微服务】
文章目录 一、初识 MQ1. 同步通讯2. 异步通讯3. MQ 常见框架 二、RabbitMQ 入门1. 概述和安装2. 常见消息模型3. 基础模型练习 三、SpringAMQP1. 简单队列模型2. 工作队列模型3. 发布订阅模型3.1 Fanout Exchange3.2 Direct Exchange3.3 Topic Exchange 一、初识 MQ 1. 同步通…...
LED闪烁
这段代码是用于STM32F10x系列微控制器的程序,主要目的是初始化GPIOA的Pin 0并使其按照特定的模式进行闪烁。下面是对这段代码的逐行解释: #include "stm32f10x.h":这一行包含了STM32F10x系列微控制器的设备头文件。这个头文件包含…...
php array_diff 比较两个数组bug避坑 深入了解
今天实用array_diff出现的异常问题,预想的结果应该是返回 "integral_initiate">"0",实际没有 先看测试代码: $a ["user_name">"测","see_num">0,"integral_initiate&quo…...
c++中STL的vector简单实现
文章目录 vector构造函数 vector()拷贝构造 vector()析构函数 ~vector()iterator 的定义begin()与const版本end()与const版本增删改查尾插push_back()尾删pop_back()指定位置插入insert()指定位置删除 erase() operator[]与const版本容量增容reserve()设置容量 resize() 成员函…...
C# 更改Bitmap图像色彩模式
方法一:直接修改RGB的值 首先将BitmapData扫描线上的所有像素复制到字节数组中,然后遍历数组并对每个像素的RGB值进行修改,最后将修改后的像素值复制回BitmapData。这个过程不会影响原始的Bitmap对象,但会改变锁定的位图区域的数…...
5.2 基于深度学习和先验状态的实时指纹室内定位
文献来源 Nabati M, Ghorashi S A. A real-time fingerprint-based indoor positioning using deep learning and preceding states[J]. Expert Systems with Applications, 2023, 213: 118889.(5.2_基于指纹的实时室内定位,使用深度学习和前一状态&…...
AIGC时代高效阅读论文实操
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...
对网站进行打点(不要有主动扫描行为)
什么是打点? 简单来说就是获取一个演习方服务器的控制权限。 目的: 1. 上传一个一句话木马 2. 挖到命令执行 3. 挖到反序列化漏洞 4. 钓鱼 假设对“千峰”网站进行打点: 1. 利用平台 1. 利用各类平台: 天眼查-商业查询平…...
502. IPO(贪心算法+优先队列/堆)
整体思想:在满足可用资金的情况下,选择其中利润最大的业务,直到选到k个业务为止,注意k可能比n大。 每次选择完一个业务,可用资金都会变动,这是可选择的业务也会变化,因此每次将可选择的业务放在…...
设计模式篇---中介者模式
文章目录 概念结构实例总结 概念 中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 就好比世界各个国家之间可能会产生冲突,但是当产…...
双端Diff算法
双端Diff算法 双端Diff算法指的是,在新旧两组子节点的四个端点之间分别进行比较,并试图找到可复用的节点。相比简单Diff算法,双端Diff算法的优势在于,对于同样的更新场景,执行的DOM移动操作次数更少。 简单 Diff 算法…...
react+antd,Table表头文字颜色设置
1、创建一个自定义的TableHeaderCell组件,并设置其样式为红色 const CustomTableHeaderCell ({ children }) > (<th style{{ color: "red" }}>{children}</th> ); 2、将CustomTableHeaderCell组件传递到Table组件的columns属性中的titl…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
【iOS】 Block再学习
iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...
数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...
