正则表达式(JAVA)
正则表达式(JAVA)
文章目录
- 正则表达式(JAVA)
- 用法
- 字符类(只匹配一个字符)
- 预定义字符(只匹配一个字符)
- 数量词
- 贪婪爬取
- 符号
- 捕获分组
- 规则
- 捕获分组
- 符号
- 非捕获分组
- 案例
- 忽略大小写
用法
-
正则表达式在用于校验信息是否满足某些规则的时候,非常的好用
-
在文本中查找满足要求的内容
字符类(只匹配一个字符)
符号 | 作用 | 补充 |
---|---|---|
[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]] | a-z和def的交集 | && 为交集符号,匹配的字符是交集范围内容 |
[a-z&&[^bc]] | a-z和非bc的交集 | 和上一个基本一致 |
[a-z&&[ ^m-p]] | a-z和除了m到p的交集 | 存在运算优先级 |
- 单个字符匹配JAVA方法:
单个字符.matches(正则表达式)
返回值是布尔类型
预定义字符(只匹配一个字符)
符号 | 作用 | 补充 |
---|---|---|
. | 匹配 任何字符 | |
\d | 匹配 一个数字 | |
\D | 匹配 非数字 | |
\s | 匹配 空白字符 ([\t\n\x0B\f\r]) | |
\w | 匹配 [a-zA-Z_0-9] 英文,数字,下划线 | |
\W | 匹配 [ ^\w] 一个非 英文,数字,下划线 字符 |
-
java中的
\
表示转义字符 -
java匹配预定义字符需要进行转移
-
PS:
"a".matches("\\d")
数量词
- 说明:
X
代表任意字符 - 可以配合上面的内容实现多符号匹配
符号 | 作用 | 补充 |
---|---|---|
X? | X 出现 一次或0次 | |
X* | X 出现 零次或多次 | |
X+ | X 出现 一次或多次 | |
X{n} | X 出现 正好n次 | {} 代表出现的次数 |
X{n, } | X 出现 至少n次 | |
X{n,m} | X 出现 至少n次但不超过m次 |
- PS:
"23dF.matches("[\\w&&[^_]]{4}")"
- 解析: 字符在
\\w
去除_
的条件下,出现4次,所以结果是true
贪婪爬取
- 贪婪爬取: 在爬取数据的时候尽可能多得获取数据
- 符号:
+,*
- PS:
ab+
- 符号:
- 非贪婪爬取: 在爬取数据时尽可能少的获取数据
- 符号:
+?,*?
- PS:
ab*?
- 符号:
符号
符号 | 作用 |
---|---|
` | ` |
&& | 相交 |
\ | 转义字符 |
() | 分组 |
[] | 范围 |
{} | 次数 |
捕获分组
规则
- 规则1: 从1开始
- 规则2: 以左括号为基准,最左边的是第一组,其次是第二组,依次类推
- PS:
(\\d+(\\d+)\\d+)
捕获分组
- 在某些情况下我们并不知道一个统一的标准,只知道一些要求时,需要使用捕获分组,也就是通过捕获某一组的数据,然后再使用
- PS : 判断一个字符串的开始字符和结束字符是否一致
- 举例:
a123a
----> Java正则表达式==>(.).+\\1
- 解释: 后面的
\\1
的意思是拿到第一组的数据复用,这里的1代指第一组 - 理解:
(.+)
每一个.+
直到获取的数据和原来不是同一类型会自动结束
符号
\\
: 内部$
: 外部
非捕获分组
符号 | 作用 |
---|---|
(?:正则) | 获取所有 |
(?=正则) | 获取前面部分 |
(?!正则) | 获取不是指定内容的前面部分 |
- 含义: 分组之后不需要再用本组数据,仅仅是把数据括起来,括起来的表达式不在占用组号
- 更多会使用第一个
案例
忽略大小写
- PS:
"(?i)字符"
表示对后面的字符忽略大小写 System.*out*.println("aB".matches("(?i)ab"));
---->true
(?i)
后面的字符才忽略大小写
相关文章:
正则表达式(JAVA)
正则表达式(JAVA) 文章目录 正则表达式(JAVA)用法字符类(只匹配一个字符)预定义字符(只匹配一个字符)数量词贪婪爬取符号捕获分组规则捕获分组符号 非捕获分组案例忽略大小写 用法 正则表达式在用于校验信息是否满足某些规则的时候,非常的好用 在文本中查找满足要求的内容 字…...
264_BOOST中的Json库解析_BOOST_AUTO(itrpromodel, doc.FindMember(“productmodel“));
BOOST_AUTO(itrpromodel, doc.FindMember("productmodel"));if(itrpromodel != doc.MemberEnd()){BOOST_AUTO(iterd_url...
linux rpm 离线安装 nginx 自用,仅供参考
检查是否安装nginx ps -ef|grep nginx 检查rpm是否安装nginx rpm -qa|grep nginx 查看linux centos 发行版本 cat /etc/centos-release (查看其它发现版本 就把centos替换为别的 比如 红旗的 redflag ) 查看cpu信息 x86_64 lscpu 检查nginx所需依赖 …...
第十二章 YOLO的部署实战篇(上篇)
cuda教程目录 第一章 指针篇 第二章 CUDA原理篇 第三章 CUDA编译器环境配置篇 第四章 kernel函数基础篇 第五章 kernel索引(index)篇 第六章 kenel矩阵计算实战篇 第七章 kenel实战强化篇 第八章 CUDA内存应用与性能优化篇 第九章 CUDA原子(atomic)实战篇 第十章 CUDA流(strea…...

无涯教程-Android - List View函数
Android ListView 是垂直滚动列表中显示的视图,使用 Adapter 从列表(如数组或数据库)中获取内容的列表项会自动插入列表中。 适配器(Adapter)实际上是UI组件和将数据填充到UI组件中的数据源之间的桥梁,适配器保存数据并将数据发送到适配器视图࿰…...
stable diffusion实践操作-重绘
系列文章目录 本文专门开一节写局部重绘相关的内容,在看之前,可以同步关注: stable diffusion实践操作 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、局…...
C# 静态构造函数未执行 .net core框架
代码如下,在执行Encoding.GetEncoding(“gb2312”);方法后报错,说没有找到对应编码,经测试,发现是静态构造函数未执行。 public static class Encodings {/// <summary>/// 注册相关编码/// </summary>static Encodi…...

Java 复习笔记 - 学生管理系统篇
文章目录 学生管理系统一,需求部分需求分析初始菜单学生类添加功能删除功能修改功能查询功能 二,实现部分(一)初始化主界面(二)编写学生类(三)编写添加学生方法(四&#…...

【UIPickerView-UIDatePicker-应用程序对象 Objective-C语言】
一、今天我们来学习三个东西 1.UIPickerView-UIDatePicker-应用程序对象 1.首先,来看数据选择控件 数据选择控件, 大家对这个数据选择控件,是怎么理解的, 1)数据选择控件,首先,是不是得有数据, 2)然后呢,你还得让用户能够选择, 3)最后,你还得是一个控件儿 那…...

仿京东 项目笔记1
目录 项目代码1. 项目配置2. 前端Vue核心3. 组件的显示与隐藏用v-if和v-show4. 路由传参4.1 路由跳转有几种方式?4.2 路由传参,参数有几种写法?4.3 路由传参相关面试题4.3.1 路由传递参数(对象写法)path是否可以结合pa…...
huggingface transformers库中LlamaForCausalLM
新手入门笔记。 LlamaForCausalLM 的使用示例,这应该是一段推理代码。 from transformers import AutoTokenizer, LlamaForCausalLMmodel LlamaForCausalLM.from_pretrained(PATH_TO_CONVERTED_WEIGHTS) tokenizer AutoTokenizer.from_pretrained(PATH_TO_CONVE…...

04-过滤器和拦截器有什么区别?【Java面试题总结】
过滤器和拦截器有什么区别? 运行顺序不同:过滤器是在 Servlet 容器接收到请求之后,但在 Servlet被调用之前运行的;而拦截器则是在Servlet 被调用之后,但在响应被发送到客户端之前运行的。 过滤器Filter 依赖于 Servle…...
如何用selenium或pyppeteer来启动多个AdsPower窗口
前言 本文是该专栏的第57篇,后面会持续分享python爬虫干货知识,记得关注。 关于selenium或pyppeteer来启动打开adspower浏览器的方法,笔者在本专栏前面有详细介绍过,感兴趣的同学可往前翻阅《如何用selenium或pyppeteer来链接并打开指纹浏览器AdsPower》,文章内容包含完整…...
京东店铺所有商品API接口数据
京东平台店铺所有商品数据接口是开放平台提供的一种API接口,通过调用API接口,开发者可以获取京东整店的商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、价格信息等详细信息 。 获取店铺所有商品接口API是一种用于获取电商平台上商…...

stm32之27.iic协议oled显示
屏幕如果无法点亮,需要用GPIO_OType_PP推挽输出,加并上拉电阻 1.显示字符串代码 2.显示图片代码(unsigned强制转换(char*)) 汉字显示...

paddle 1-高级
目录 为什么要精通深度学习的高级内容 高级内容包含哪些武器 1. 模型资源 2. 设计思想与二次研发 3. 工业部署 4. 飞桨全流程研发工具 5. 行业应用与项目案例 飞桨开源组件使用场景概览 框架和全流程工具 1. 模型训练组件 2. 模型部署组件 3. 其他全研发流程的辅助…...

ChatGPT帮助高职院校学生实现个性化自适应学习与对话式学习
一、学习层面:ChatGPT帮助高职院校学生实现个性化自适应学习与对话式学习 1.帮助高职院校学生实现个性化自适应学习 数字技术的飞速发展引起了教育界和学术界对高职院校学生个性化自适应学习的更多关注和支持,其运作机制依赖于人工智能等技术࿰…...

如何通过python写接口自动化脚本对一个需要调用第三方支付的报名流程进行测试?
对于需要调用第三方支付的报名流程进行接口自动化测试,可以通过以下步骤来编写Python代码: 1. 确认API需求 首先,需要确认报名流程的API需求和预期功能。这涉及到对业务需求的理解和API设计的分析。 2. 安装依赖库 在Python程序中&#x…...

将OSGB格式数据转换为3d tiles的格式
现有需求需要将已有的一些OSGB数据加载到CesiumJS中展示,但是CesiumJS本身不支持osbg格式的数据渲染所以我们需要将其转换一下,有两种格式可以转换一种是glTF格式,另一种是我们今天要介绍的3D Tiles格式 下载开源工具 在github上其实有好多这种工具,每个工具的用法大同小异,这…...

【易售小程序项目】小程序首页完善(滑到底部数据翻页、回到顶端、基于回溯算法的两列数据高宽比平衡)【后端基于若依管理系统开发】
文章目录 说明细节一:首页滑动到底部,需要查询下一页的商品界面预览页面实现 细节二:当页面滑动到下方,出现一个回到顶端的悬浮按钮细节三:商品分列说明优化前后效果对比使用回溯算法实现ControllerService回溯算法 优…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...