当前位置: 首页 > news >正文

【java 正则表达式 笔记】

文章目录

  • 快速入门
    • 匹配中文或数字或大小写字母(一个或多个)
  • 正则表达式底层实现(重要)
    • mather.find() 完成的任务
    • mather.group(0) 分析
  • 正则表达式基本语法
    • 元字符
      • 转义字符
      • 区分大小写
      • 限定字符
      • 选择匹配符
      • 特殊字符
      • 字符匹配符
      • 定位符
    • 分组、捕获和反向引用
      • 捕获
      • 特别分组
      • 反向引用
        • 经典结巴程序
  • 三个常用类
    • Pattern
      • 常用方法
        • matches 整体匹配
    • Matcher
      • 常用方法
    • PatternSyntaxException
  • 应用实例
    • 匹配汉字、邮政编码、qq号码、手机号
    • 匹配url
    • 对url进行解析
  • String中使用正则表达式
    • 替换
    • 验证手机号
    • 分割匹配
    • 验证是不是整数或者小数
    • 分割匹配
    • 验证是不是整数或者小数

快速入门

简单的说:正则表达式是对字符串执行模式匹配的技术。

正则表达式:regular expression=>RegExp

匹配中文或数字或大小写字母(一个或多个)

String content = "abc12ABC34231esdfsABCdsadd想问ABC下我下午";
// 创建Pattern对象,模式对象
Pattern pattern = Pattern.compile("([\\u4e00-\\u9fff]+)|([0-9]+)|([a-zA-Z]+)");
// 创建匹配器对象
//理解:就是matcher匹配器按照 pattern(模式/样式),到content文本中去匹配
// 找到就返回true,否则就返回false
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {// 匹配内容、文本,放到 m.group(0)System.out.println(matcher.group(0));
}

在这里插入图片描述

输出

在这里插入图片描述

正则表达式底层实现(重要)

mather.find() 完成的任务

在这里插入图片描述

考虑分组

在这里插入图片描述

在这里插入图片描述

mather.group(0) 分析

在这里插入图片描述

1.根据groups[0]=0和groups[1]=4的记录的位置,从content开始截取子字符串返回
就是[0,4) 包含0但是不包含索引为4的位置

如果再次指向find方法,仍然按上面分析来执行

在这里插入图片描述

//1小结
//1.如果正则表达式有()即分组
//2.取出匹配的字符串规则如下
//3. group(0)表示匹配到的子字符串
//4. group(1)表示匹配到的子字符串的第1组字串
//5. group(2)表示匹配到的子字符串的第2组字串
//16. … 但是分组的数不能越界

在这里插入图片描述

正则表达式基本语法

元字符

转义字符

在Java的正则表达式中,两个\代表其他语
言中的一个\

在这里插入图片描述

区分大小写

java正则表达式默认是区分字母大小写的,如何实现不区分大小写

在这里插入图片描述

限定字符

在这里插入图片描述

在这里插入图片描述

细节:java匹配默认贪婪匹配,即尽可能匹配多的

选择匹配符

在这里插入图片描述

特殊字符

字符匹配符

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

定位符

在这里插入图片描述

分组、捕获和反向引用

1.分组
我们可以用圆括号组成一个比较复杂的匹配模式,那么一个圆括号的部分我们可
以看作是一个子表达式/一个分组。
2.捕获
把正则表达式中子表达式/分组匹配的内容,保存到内存中以数字编号或显式命名
的组里,方便后面引用,从左向右,以分组的左括号为标志,第一个出现的分组
的组号为1,第二个为2,以此类推。组0代表的是整个正则式
3.反向引用
圆括号的内容被捕获后,可以在这个括号后被使用,从而写出一个比较实用的匹
配模式,这个我们称为反向引用,这种引用既可以是在正则表达式内部,也可以是
在正则表达式外部,内部反向引用分组号,外部反向引用$分组号

捕获

在这里插入图片描述

特别分组

在这里插入图片描述

反向引用

在这里插入图片描述

在这里插入图片描述

经典结巴程序
String content = "我...我要...学学学学...编程java";
// 去掉所有的.
Pattern pattern = Pattern.compile("\\.");
Matcher matcher = pattern.matcher(content);
content = matcher.replaceAll("");
System.out.println(content);//String regExp = "([\\u4e00-\\u9fff])\\1+([\\u4e00-\\u9fff])\\2?([\\u4e00-\\u9fff])\\3+([\\u4e00-\\u9fff]+)+(\\w+)";//        pattern = Pattern.compile("(.)\\1+");
//        matcher = pattern.matcher(content);
//        while (matcher.find()) {
//            System.out.println("找到=" + matcher.group());
//        }
//        // 使用 反向引用$1 来替换匹配到的内容
//        content = matcher.replaceAll("$1");
//        System.out.println(content);// 使用一条语句 去掉重复的字
content = Pattern.compile("(.)\\1+").matcher(content).replaceAll("$1");
System.out.println(content);

在这里插入图片描述

三个常用类

java.util.regex包主要包括以下三个类Pattern类、Matcher类和PatternSyntaxException

Pattern类
pattern对象是一个正则表达式对象。Pattern类没有公共构造方法。要创建一个Pattern对
象,调用其公共静态方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第
一个参数,比如:Pattern r=Pattern.compile(pattern);

Matcher类
Matcher对象是对输入字符串进行解释和匹配的引擎。与Pattern类一样,Matcher也没有
公共构造方法。你需要调用Pattern对象的matcher方法来获得一个Matcher对象

PatternSyntaxException
PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误。

Pattern

常用方法

matches 整体匹配

用于整体匹配,在验证输入的字符串是否满足条件使用

在这里插入图片描述

Matcher

常用方法

在这里插入图片描述

替换

在这里插入图片描述

PatternSyntaxException

应用实例

匹配汉字、邮政编码、qq号码、手机号

String content = "韩顺平教育";
content = "13588889999";
// 汉字
//String regExp = "^[\u0391-\uffe5]+$";// 邮政编码
// 要求:是1-9开头的六位数
//String regExp = "^[1-9]\\d{5}$";// qq号码
// 要求:1-9开头的一个(5位数-10位数)
//String regExp = "^[1-9]\\d{4,9}$";// 手机号码
// 要求:必须以13,14,15,18 开头的11位数,比如  13588889999
String regExp = "^1[3|4|5|8]\\d{9}$";
Pattern pattern = Pattern.compile(regExp);
Matcher matcher = pattern.matcher(content);
if(matcher.find()) {
System.out.println(matcher.group(0));
}

匹配url

String content = "https://www.bilibili.com/video/BV1fh411y7R8?p=894&vd_source=c12af894764c0594ed08999165cda06a";
String regExp = "^((http|https)://)?([\\w-]+\\.)+[\\w-]+(/[\\w-?=&/%.#]*)?$";
Pattern compile = Pattern.compile(regExp);
Matcher matcher = compile.matcher(content);
if (matcher.find()) {System.out.println(matcher.group());
}

在这里插入图片描述

对url进行解析

在这里插入图片描述

String url = "https://www.google.com:8080/abc/index.html";
String regExp = "^(https?)?(?:://)?(\\w+\\.\\w+\\.?\\w*\\.?\\w+)+(?::(\\d{2,5}))?(?:/\\w+/)?(\\w+\\.[a-zA-Z]+)?$";
Pattern pattern = Pattern.compile(regExp);
Matcher matcher = pattern.matcher(url);
if (matcher.matches()) {System.out.println("协议:" +matcher.group(1));System.out.println("域名:" +matcher.group(2));System.out.println("端口:" +matcher.group(3));System.out.println("文件名:" +matcher.group(4));
} else {System.out.println("匹配失败");
}

在这里插入图片描述

在这里插入图片描述

String中使用正则表达式

替换

在这里插入图片描述

验证手机号

在这里插入图片描述

分割匹配

在这里插入图片描述

验证是不是整数或者小数

在这里插入图片描述

分割匹配

在这里插入图片描述

验证是不是整数或者小数

在这里插入图片描述

相关文章:

【java 正则表达式 笔记】

文章目录 快速入门匹配中文或数字或大小写字母(一个或多个) 正则表达式底层实现(重要)mather.find() 完成的任务mather.group(0) 分析 正则表达式基本语法元字符转义字符区分大小写限定字符选择匹配符特殊字符字符匹配符定位符 分组、捕获和反向引用捕获特别分组反向引用经典结…...

基于PWLCM混沌映射的麋鹿群优化算法(Elk herd optimizer,EHO)的多无人机协同路径规划,MATLAB代码

一、麋鹿群优化算法EHO 基本概念 麋鹿群优化算法(EHO,Elephant Herding Optimization)是2024年提出的一种启发式优化算法,它的灵感来自麋鹿群的繁殖过程。麋鹿有两个主要的繁殖季节:发情和产犊。在发情季节&#xff0…...

Vue2五、自定义指令,全局局部注册、指令的值 ,插槽--默认插槽,具名插槽 ( 作用域插槽)

一、自定义指令 使用步骤 1. 注册 (全局注册 或 局部注册) ,在 inserted 钩子函数中,配置指令dom逻辑 2. 标签上 v-指令名 使用 1、自定义指令(全局) Vue.directive("指令名",{ 指令的配置项 insert…...

Pika Labs技术浅析(五):商业智能技术

Pika Labs 的商业智能旨在通过联机分析处理(OLAP)和数据仓库(Data Warehouse)等技术,帮助企业用户高效地进行数据分析和决策支持。 一、商业智能技术模块概述 Pika Labs 的商业智能技术模块旨在通过集成数据仓库和联机…...

YOLO-World:Real-Time Open-Vocabulary Object Detection

目录 摘要 Abstract YOLO-World 1 模型架构 1.1 Text Encoder 1.2 YOLO Backbone 2 RepVL-PAN 2.1 T-CSPLayer 2.2 I-Pooling Attention 2.3 预测 3 消融实验 3.1 预训练数据 3.2 RepVL-PAN的消融实验 3.3 文本编码器 4 效果展示 4.1 零样本 4.2 根据词汇表检…...

Fastjson <= 1.2.47 反序列化漏洞复现

0x01 前言 Fastjson 是一个 Java 语言编写的高性能功能完善的 JSON 库&#xff0c;可以将 Java 对象转换为 JSON 格式&#xff0c;也可以将 JSON 字符串转换为 Java 对象&#xff0c;在中国和美国使用较为广泛。 0x02 漏洞成因 Fastjson < 1.2.68 版本在处理反序列化对象时…...

鸿蒙项目云捐助第二十一讲云捐助项目物联网IoT模拟器的使用

鸿蒙项目云捐助第二十一讲云捐助项目物联网IoT模拟器的使用 在前面的内容中&#xff0c;已经实现了云捐助物联网IoT的产品及设备设置&#xff0c;并且使用华为云Iot设备的在线调试工具进行命令下发的调试&#xff0c;这里也可以通过华为Iot物联网提供的MQTT模拟器进行连接。 …...

大数据技术原理与应用期末复习-知识点(二)

HBASE Hbase与传统关系数据库的对比分析 1.数据类型&#xff1a; 关系型数据库采用关系模型 Hbase采用更简单的数据模型&#xff08;把数据存储为未经解释的字符串&#xff09; 2.数据操作&#xff1a; 关系数据库&#xff1a;增删改查等 Hbase&#xff1a;插入 查询 删…...

高效准确的PDF解析工具,赋能企业非结构化数据治理

目录 准确性高&#xff1a;还原复杂版面元素 使用便捷&#xff1a;灵活适配场景 贴心服务&#xff1a;快速响应机制 在数据为王的时代浪潮中&#xff0c;企业数据治理已成为组织优化运营、提高竞争力的关键。随着数字化进程的加速&#xff0c;企业所积累的数据量呈爆炸式增长…...

C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码

一、介绍 栈和队列是限定插入和删除只能在表的“端点”进行的线性表&#xff0c;是线性表的子集&#xff0c;是插入和删除位置受限的线性表。 &#xff08;操作受限的线性表&#xff09; 二、栈 1&#xff09;概念&#xff1a; 栈(stack)是一个特殊的线性表&#xff0c;是限…...

读书笔记~管理修炼-缄默效应

缄默效应&#xff1a;学会正确批评下属 员工明明犯了错误&#xff0c;却不及时告知你&#xff0c;总是拖到最后一刻无法弥补时才不得不承认出了问题——你遇到过这样的问题吗&#xff1f; 这其实是缄默效应在发挥作用。 在职场中&#xff0c;即使再扁平化的环境&…...

视频会议系统会前预约模块必须包含哪些功能?

视频会议系统会前预约模块必须包含哪些功能&#xff1f; 视频会议系统的会前预约模块是企业高效管理会议资源、提升会议效率的重要工具。一个完善的会前预约模块必须包含一系列功能&#xff0c;以确保会议的顺利进行和资源的合理分配。以下是对视频会议系统会前预约模块必须包…...

RabbitMQ中的Topic模式

在现代分布式系统中&#xff0c;消息队列&#xff08;Message Queue&#xff09;是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个广泛使用的开源消息代理&#xff0c;支持多种消息传递模式&#xff0c;其中 Topic 模式 是一种灵活且强大的模式&#xff0c;允许生产者…...

tslib(触摸屏输入设备的轻量级库)的学习、编译及测试记录

目录 tslib的简介tslib的源码和make及make install后得到的文件下载tslib的主要功能tslib的工作原理tslib的核心组成部分tslib的框架和核心函数分析tslib的框架tslib的核心函数ts_setup()的分析(对如何获取设备名和数据处理流程的分析)函数ts_setup()自身的主要代码ts_setup()对…...

Ubuntu vi(vim)编辑器配置一键补全main函数

1.打开对应的配置文件 vi ~/.vim/snippets/c.snippets 2.按G将光标定位到文件末尾 3.按i进入插入模式 以tab键开头插入下的内容&#xff0c;空行也要加 tab键 4.:wq保存退出 5.再打开任意一个新的 .c文件后&#xff0c;插入模式输入 main 然后按tal键就能补全了...

验证码机制

偶然间看到了验证码机制&#xff0c;顺便总结一下&#xff1a; 首先&#xff0c;验证码是从后端生成的&#xff0c;随机生成&#xff1b; 【后端永远认为前端有可能会被伪造】 1.后端调用相关的绘图第三方类库&#xff0c;或是&#xff08;平台PHP、.NET、java&#xff09;系…...

【CVE-2024-56145】PHP 漏洞导致 Craft CMS 出现 RCE

大多数开发人员都同意,与 15 年前相比,PHP 是一种更加理智、更加安全和可靠的语言。PHP5早期的不良设计已让位于更好的开发生态系统,其中包括类、自动加载、更严格的类型、更理智的语法以及一大堆其他改进。安全性也没有被忽视。 register_globals一些老读者可能还记得和的…...

使用FakeSMTP创建本地SMTP服务器接收邮件具体实现。

以下代码来自Let’s Go further节选。具体说明均为作者本人理解。 编辑邮件模版 主要包含三个template: subject&#xff1a;主题plainBody&#xff1a; 纯文本正文htmlBody&#xff1a;超文本语言正文 {{define "subject"}}Welcome to Greenlight!{{end}} {{def…...

【网络安全】逆向工程 练习示例

1. 逆向工程简介 逆向工程 (RE) 是将某物分解以了解其功能的过程。在网络安全中&#xff0c;逆向工程用于分析应用程序&#xff08;二进制文件&#xff09;的运行方式。这可用于确定应用程序是否是恶意的或是否存在任何安全漏洞。 例如&#xff0c;网络安全分析师对攻击者分发…...

Oracle Database 21c Express Edition数据库 和 Sqlplus客户端安装配置

目录 一. 前置条件二. Win10安装配置Oracle数据库2.1 数据库获取2.2 数据库安装2.3 数据库配置确认2.4 数据库访问 三. Win10配置Oracle数据库可对外访问3.1 打开文件和打印机共享3.2 开放1521端口 四. 端口与地址确认4.1 查看监听器的状态4.2 Win10查看1521端口是否被监听4.3 …...

工程伦理案例分析:从经典失败项目看责任分配与风险预防

工程伦理案例分析&#xff1a;从经典失败项目看责任分配与风险预防 当一座桥梁在通车典礼上轰然倒塌&#xff0c;当一栋新建大楼在台风中支离破碎&#xff0c;这些触目惊心的工程事故背后&#xff0c;往往隐藏着复杂的伦理困境。工程伦理不是简单的对错判断题&#xff0c;而是需…...

VCS编译SystemVerilog时,那个‘-P’选项你加对了吗?详解Verdi PLI配置

VCS编译SystemVerilog时&#xff0c;那个‘-P’选项你加对了吗&#xff1f;详解Verdi PLI配置 在芯片验证的日常工作中&#xff0c;VCSVerdi的组合堪称黄金搭档。但当你满怀信心地敲下编译命令&#xff0c;却发现怎么也生成不了关键的fsdb波形文件时&#xff0c;那种挫败感简直…...

无损视频剪辑效率全攻略:5分钟掌握革新性剪辑技术

无损视频剪辑效率全攻略&#xff1a;5分钟掌握革新性剪辑技术 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 你是否曾因视频剪辑软件的漫长渲染过程而错失发布良机&a…...

华为HMS Scan Kit Customized View Mode:打造品牌专属扫码界面的实战指南

1. 为什么选择Customized View Mode&#xff1f; 扫码功能已经成为现代App的标配&#xff0c;但很多开发者面临一个两难选择&#xff1a;要么用系统默认的扫码界面显得千篇一律&#xff0c;要么完全自己开发一套又耗时耗力。华为HMS Scan Kit的Customized View Mode正好解决了这…...

[C语言]控制台扫雷游戏

用精简的代码&#xff0c;回顾数组、函数和游戏逻辑的核心应用。还记得Windows自带的扫雷吗&#xff1f;这次我们用C语言实现一个9x9的简易版&#xff0c;适合用来巩固函数封装、二维数组和随机数等知识点。1. 整体思路 扫雷的核心功能可以拆成几块&#xff1a; 打印菜单&#…...

揭秘Captum归因算法:5种NLP文本分类与情感分析的最佳实践

揭秘Captum归因算法&#xff1a;5种NLP文本分类与情感分析的最佳实践 【免费下载链接】captum Model interpretability and understanding for PyTorch 项目地址: https://gitcode.com/gh_mirrors/ca/captum 在当今人工智能快速发展的时代&#xff0c;模型可解释性已成为…...

突破内容采集瓶颈:XHS-Downloader的5大行业解决方案与效率提升指南

突破内容采集瓶颈&#xff1a;XHS-Downloader的5大行业解决方案与效率提升指南 【免费下载链接】XHS-Downloader 小红书&#xff08;XiaoHongShu、RedNote&#xff09;链接提取/作品采集工具&#xff1a;提取账号发布、收藏、点赞、专辑作品链接&#xff1b;提取搜索结果作品、…...

CLIP图文匹配测试工具:5分钟本地部署,零基础验证AI识图能力

CLIP图文匹配测试工具&#xff1a;5分钟本地部署&#xff0c;零基础验证AI识图能力 1. 工具简介与核心价值 你是否遇到过这样的场景&#xff1a;手头有一批产品图片&#xff0c;需要快速判断它们与哪些文字描述最匹配&#xff1f;或者想验证AI模型是否能准确理解图片内容&…...

SpringBoot项目实战:用Java海康SDK搞定摄像头录像与门禁人脸下发(附完整代码)

SpringBoot企业级实战&#xff1a;海康威视SDK深度集成与智能安防系统开发 1. 企业级安防系统架构设计 在智能园区和现代化办公环境中&#xff0c;视频监控与门禁管理的无缝集成已成为刚需。海康威视作为全球领先的安防解决方案提供商&#xff0c;其设备SDK的深度集成能够为Jav…...

动态间隙精准诊断:NHJX-13 型底盘间隙仪机动车底盘安全检测全方案

动态间隙精准诊断&#xff1a;NHJX-13 型底盘间隙仪机动车底盘安全检测全方案在机动车安全环保检测体系中&#xff0c;底盘间隙仪是诊断车辆转向机构、悬挂系统、传动部件间隙状况的核心设备&#xff0c;尤其对大中型客车、重中型货车等营运车辆&#xff0c;其性能直接决定底盘…...