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

正则表达式(语法+例子)

文章目录

  • 一、介绍
  • 二、语法
    • 1、匹配字符
    • 2、表示数量的字符
    • 3、边界字符
    • 4、其他字符
    • 5、转义字符
  • 三、例子
    • 1、邮箱
    • 2、用逗号分隔的数字集合1,2
    • 3、允许一位小数
    • 4、20yy-mm-dd日期格式
    • 5、手机号
    • 6、匹配html、xml标签


一、介绍

  • 正则表达式(Regular Expression),又称规则表达式。根据定义好的“语法规则”用来匹配、查找字符串。

二、语法

1、匹配字符

语法描述
[a-z]a-z的任意一个字符
[a-zA-Z0-9]a-zA-Z0-9中的任意一个字符
[^abc]除了abc的任意字符
[a-z&&[^bc]]a-z中除了bc以外的任意字符
.任意一个字符
\d任意一个数字字符=[0-9]
\D非数字字符
\w单词字符[a-zA-Z0-9_ ]
\W非单词字符
\s空白字符[\t\n\r\f]
\S非空白字符

2、表示数量的字符

语法描述
x?表示0个或1个x
x*表示0个或任意多个x
x+表示大于等于1个
x{n}表示n个x
x{n,}表示大于等于n个
x{n,m}表示n到m个

3、边界字符

  • ^ 匹配开始位置([]外,内=取反)
//匹配开始是A的一个字符
String str1="AABBA";
String regex="^A";
String str2=str1.replaceAll(regex,"K");	//KABBA
  • $ 匹配结束位置
//匹配结束位置是一个或多个A字符
String str1="AABBAA";
String regex="A+$";
String str2=str1.replaceAll(regex,"K");	//AABBK

4、其他字符

// () 表示一个整体
// | 表示或的关系
//以158或159开头
String str1="1583300";
String regex="^(158|159)\\d{4}";
boolean b=str1.matches(regex);	//true

5、转义字符

  • 当字符串中包含正则表达式中的含义字符时,需要转义才会把他当成普通字符来匹配
字符转义
[\[
.\.
+\+
\\\
{\{
}\}
//将[替换成0
String str="[1234";
//若不转义则不代表普通字符[,而是正则表达式中的[
String regex="\\[";
String str1=str.replaceAll(regex,"0"); //01234

三、例子

1、邮箱

//单词字符1个或多个
//有一个@
//字母一个到多个
//. 和一个到多个字母
//这个整体一个到多个
"[a-zA-Z0-9_]+@[a-zA-Z]+(\\.[a-zA-Z]+)+";

2、用逗号分隔的数字集合1,2

//([1-9:一个到多个]
//[0-9:0或任意多个]
//,1个逗号
//* 前面部分0或任意多个
//后面同前面
"^([1-9]+[0-9]*,)*[1-9]+[0-9]*$";

3、允许一位小数

"(^0\.[1-9]$)|(^[1-9]\d*(\.\d)?$)";

4、20yy-mm-dd日期格式

"^20\d{2}-(0|1){1}[0-9]-(0|1|2|3){1}[0-9]$";

5、手机号

"^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$";

6、匹配html、xml标签

//将标签内和标签内的字符或者html的空格
//末尾的空白字符
//都替换成空串
str=str.replaceAll("(</?[^<>]+>)|(&nbsp;)","").replaceAll("\\s+$","");

相关文章:

正则表达式(语法+例子)

文章目录一、介绍二、语法1、匹配字符2、表示数量的字符3、边界字符4、其他字符5、转义字符三、例子1、邮箱2、用逗号分隔的数字集合1,23、允许一位小数4、20yy-mm-dd日期格式5、手机号6、匹配html、xml标签一、介绍 正则表达式&#xff08;Regular Expression&#xff09;&am…...

Properties和IO流集合的方法

方法名说明void load(InputStream inStream)从输入字节流读取属性列表&#xff08;键和元素&#xff09;void load(Reader reader)从输入字符流读取属性列表&#xff08;键和元素对&#xff09;void store(OutputStream out,String comments)将此属性列表&#xff08;键和元素对…...

python 生成器、迭代器、动态新增属性及方法

目录 一、生成器 1、生成器定义 2、生成器存在的意义 3、创建生成器方式一&#xff08;生成器表达式&#xff09; 4. 创建生成器方式二&#xff08;生成器函数&#xff09; 1. 生成器函数 2. 生成器函数的工作原理 5. 总结 1. 什么是生成器 2. 生成器特点 二、迭代器…...

Java处理JSON

Java处理json有很多种方法&#xff0c;在这里总结一下。 1 Jackson Spring MVC 默认采用Jackson解析Json&#xff0c;出于最小依赖的考虑&#xff0c;也许Json解析第一选择就应该是Jackson。 1.1 引入的包 Jackson核心模块由三部分组成&#xff1a;jackson-core、jackson-a…...

58-Map和Set练习-LeetCode692前k个高频单词

题目 给定一个单词列表 words 和一个整数 k &#xff0c;返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率&#xff0c; 按字典顺序 排序。 示例 1&#xff1a; 输入: words ["i", "love", …...

线程生命周期及五种状态

文章目录一、线程生命周期及五种状态1、New(初始化状态)2、Runnable(就绪状态)3、Running(运行状态)4、Blocked(阻塞状态)5、Terminated&#xff08;终止状态&#xff09;二、线程基本方法1、线程等待&#xff08;wait&#xff09;2、线程睡眠&#xff08;sleep&#xff09;3、…...

OBCP第八章 OB运维、监控与异常处理-灾难恢复

灾难恢复是指当数据库中的数据在被有意或无意破坏后复原数据库所需要执行的活动 回收站&#xff1a;回收站在原理上说就是一个数据字典表&#xff0c;放置用户删除的数据库对象信息。用户删除的东西被放入回收站后&#xff0c;其实仍然占据着物理空间&#xff0c;除非您手动进…...

亚马逊云科技Serverless Data:数字经济下的创新动能

Serverless时代已经到来&#xff01;企业的技术架构&#xff0c;总是伴随着不断增长的数据与日趋复杂的业务持续演进。如何通过构建更易用的技术架构来聚焦在业务本身&#xff0c;而不必在底层基础设施的管理上投入过多的精力&#xff0c;是数据驱动型企业需要思考的重要议题。…...

【Ruby学习笔记】15.Ruby 异常

Ruby 异常 异常和执行总是被联系在一起。如果您打开一个不存在的文件&#xff0c;且没有恰当地处理这种情况&#xff0c;那么您的程序则被认为是低质量的。 如果异常发生&#xff0c;则程序停止。异常用于处理各种类型的错误&#xff0c;这些错误可能在程序执行期间发生&…...

聊聊MySQL主从延迟

文章目录 MySQL 的高可用是如何实现的呢?二、什么是主备延迟?三、主备延迟常见原因1、备库机器配置差2、备库干私活3、大事务四、主库不可用,主备切换有哪些策略?1、可靠优先2、可用优先实验一实验二3、结论MySQL 的高可用是如何实现的呢? 高可用性(high availability,缩…...

【C++从0到1】19、C++中多条件的if语句

C从0到1全系列教程 1、多条件的if语句 语法&#xff1a; if (表达式一) { // 表达式一为真时执行的语句。 } else if (表达式二) {// 表达式二为真时执行的语句。 } else if (表达式三) {// 表达式三为真时执行的语句。 } …… else if (表达式n) {// 表达式n为真时执行的语句。…...

【多微电网】计及碳排放的基于交替方向乘子法(ADMM)的多微网电能交互分布式运行策略研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Linux(centos7)安装防火墙firewalld及开放端口相关命令

安装firewalld 防火墙命令&#xff1a; yum install firewalld 安装完成&#xff0c;查看防火墙状态为 not running&#xff0c;即未运行&#xff0c;输入命令开启&#xff1a; 添加开放端口&#xff1a; 防火墙相关命令&#xff1a; 查看防火墙状态 systemctl status firewa…...

Linux部署.Net Core Web项目

本文主要记录我在Linux(Ubuntu)上部署.net core 的操作记录&#xff0c;也便于以后部署。 如对您有所帮助&#xff0c;不胜荣幸~ 文章目录前言一、准备工作1. 版本信息2. windows端web项目二、操作步骤1. Linux 配置 .net 运行环境1.1 查看最新 .net 运行环境的下载路径1.2 安装…...

【C++】STL之stack、queue的使用和模拟实现+优先级队列(附仿函数)+容器适配器详解

之前的一段时间&#xff0c;我们共同学习了STL中一些容器&#xff0c;如string、vector和list等等。本章我们将步入新阶段的学习——容器适配器。本章将详解stack、queue的使用和模拟实现优先级队列&#xff08;附仿函数&#xff09;容器适配器等。 目录 &#xff08;一&…...

第⑦讲:Ceph集群RGW对象存储核心概念及部署使用

文章目录1.RadosGW对象存储核心概念1.1.什么是RadosGW对象存储1.2.RGW对象存储架构1.3.RGW对象存储的特点1.4.对象存储中Bucket的特性1.4.不同接口类型的对象存储访问对比2.在集群中部署RadosGW对象存储组件2.1.部署RGW组件2.2.集群中部署完RGW组件后观察集群的信息状态2.3.修改…...

从异步到promise

一&#xff0c;背景 1.1&#xff0c;js的单线程 这一切&#xff0c;要从js诞生之初说起&#xff0c;因为js是单线程的语言。 js单线程原因&#xff1a;作为浏览器脚本语言&#xff0c;JavaScript的主要用途是与用户互动&#xff0c;以及操作DOM。这决定了它只能是单线程&…...

Linux系统中进行JDK环境的部署

一、为什么需要部署JDK。 JDK&#xff1a;Java Development Kit&#xff0c;是用于Java语言开发的环境。 部署JDK不需要懂得Java语言&#xff0c;只需要掌握Linux相关命令即可。 二、部署版本与环境。 系统&#xff1a;安装在VMware环境下的CentOS7.6&#xff1b; JDK版本&a…...

Leetcode.1033 移动石子直到连续

题目链接 Leetcode.1033 移动石子直到连续 Rating &#xff1a; 1421 题目描述 三枚石子放置在数轴上&#xff0c;位置分别为 a&#xff0c;b&#xff0c;c。 每一回合&#xff0c;你可以从两端之一拿起一枚石子&#xff08;位置最大或最小&#xff09;&#xff0c;并将其放入…...

【Java】在SpringBoot中使用事务注解(@Transactional)时需要注意的点

在SpringBoot中使用事务注解&#xff08;Transactional&#xff09;时需要注意的点Transactional是什么使用事务注解&#xff08;Transactional&#xff09;时需要注意的点Transactional是什么 Transactional是Spring框架提供的一个注解&#xff0c;用于声明事务边界和配置事务…...

CTF是什么?一文带你读懂网络安全大赛

CTF是什么&#xff1f;一文带你读懂网络安全大赛 前言 随着大数据、人工智能的发展&#xff0c;人们步入了新的时代&#xff0c;逐渐走上科技的巅峰。 科技是一把双刃剑&#xff0c;网络安全不容忽视&#xff0c;人们的隐私在大数据面前暴露无遗&#xff0c;账户被盗、资金损失…...

OpenClaw安全加固指南:nanobot镜像的防火墙与权限配置

OpenClaw安全加固指南&#xff1a;nanobot镜像的防火墙与权限配置 1. 为什么需要安全加固&#xff1f; 当我第一次在本地部署OpenClaw时&#xff0c;最让我忐忑不安的就是安全问题。这个能操控我鼠标键盘、读写文件的AI助手&#xff0c;会不会不小心删掉我的重要文档&#xf…...

Fortran开发环境配置2024实践指南

Fortran开发环境配置2024实践指南 【免费下载链接】vscode-fortran-support Fortran language support for Visual Studio Code 项目地址: https://gitcode.com/gh_mirrors/vs/vscode-fortran-support 在科学计算与工程领域&#xff0c;Fortran语言依然保持着不可替代的…...

brpc并发编程模型性能对比:基准测试结果

brpc并发编程模型性能对比&#xff1a;基准测试结果 【免费下载链接】brpc brpc is an Industrial-grade RPC framework using C Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. &…...

JSON·学习笔记

“误报。我的安全阀一切正常。” “我们继续&#xff0c;今天我想解释一下什么是JSON。” “是啊&#xff0c;这个词我听过很多次了&#xff0c;什么意思&#xff1f;” “随着网络的发展&#xff0c;带有 JavaScript 的 HTML 页面开始主动与服务器通信并从服务器下载数据。为…...

从零开始学习C++ -- 基础知识

C入门基础1.C的第一个程序2.命名空间2.1 namespace的价值2.2 namespace的定义2.3命名空间使用3.C输入&输出4.缺省参数5.函数重载6.引用6.1引用的概念和定义6.2引用的特性6.3引用的使用6.4const引用6.5指针和引用的关系7.inline8.nullptr1.C的第一个程序 #include <iost…...

# 发散创新:用Python打造自动化渗透测试工具链,从扫描到利用的全流程实战在网络安全攻防对抗中,**自动化渗透测试工

发散创新&#xff1a;用Python打造自动化渗透测试工具链&#xff0c;从扫描到利用的全流程实战 在网络安全攻防对抗中&#xff0c;自动化渗透测试工具正逐步成为红队成员和安全研究人员的核心利器。传统工具如Nmap、Burp Suite虽强大&#xff0c;但缺乏灵活定制能力&#xff1b…...

Cursor最新版0.44.11配置DeepSeek-R1模型保姆级教程(含报错解决方案)

Cursor 0.44.11深度适配DeepSeek-R1模型全流程指南 当技术爱好者第一次在Cursor中尝试调用DeepSeek-R1模型时&#xff0c;往往会遇到各种"水土不服"的情况。就像刚拿到新相机的摄影师需要调整镜头焦距一样&#xff0c;我们需要对Cursor进行精确配置才能充分发挥这个强…...

精读《Harness design for long-running application development》:真正拉开差距的,不是模型本身,而是你怎么给它harness

精读《Harness design for long-running application development》&#xff1a;真正拉开差距的&#xff0c;不是模型本身&#xff0c;而是你怎么给它搭脚手架 原文&#xff1a;Harness design for long-running application development Anthropic 这篇文章最值得读的地方&a…...

从零实现手眼标定:Python+Realsense+JAKA实战与四元数、欧拉角、旋转矩阵转换详解

1. 手眼标定基础概念与实战准备 手眼标定是机器人视觉引导中的核心环节&#xff0c;简单来说就是确定相机"眼睛"和机械臂"手"之间的相对位置关系。想象一下&#xff0c;当你闭着眼睛摸鼻子时&#xff0c;大脑需要知道手和鼻子的相对位置——机器人系统同样…...