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

正则表达式快速入门

正则表达式是由一系列元字符(Meta-characters)组成的模式,用于定义搜索或替换文本的规则。元字符具有特殊含义,用于指定搜索模式的结构。以下是一些常用的正则表达式元字符及其功能:

字符匹配符

符号含义
.匹配除 \r\n以外的任何单个字符
\d匹配数字字符
\D匹配非数字字符
\w匹配单词字符(英文、数字、下划线、汉字)
\W匹配非单词字符(#、@、_)
\s匹配空白符(包括换行和Tab)
\S匹配非空白符

案例:

  • a...b :匹配文本中以a开头,b结尾,中间包含三个字符的字符串 例如:aaaab、a123b
  • \W\d\d :匹配文本中以1个非字符开头,后跟两个数字的字符串 例如:#12、?00

限定符(Quantifier):
限定符用于指定符号前面的字符和组合项连续出现的次数,常用的限定字符如下:

符号含义
*指定字符重复0次或n次
+指定字符重复0次或n次
?指定字符重复0次或1次
{n}正好匹配n个字符或组合,n是非负数
{n,}匹配n个以上的字符或组合
{n,m}匹配n-m个字符或女组合,m大于n

案例:

  • [123]*:匹配文本中由123字符组成的字符串 例如:123、11123、33
  • \d+: 匹配文本中重复1次或多次数字
  • https?:匹配文本中的http或者https字符串
  • \d{10}:匹配文本中10个连续的数字
  • \d{4,}:匹配文本中连续4个或以上的数字
  • ^\d{1,6}$:匹配文本中连续1-6个的数字

字符类(Character Classes)
用于匹配特定的字符集合。

符号含义
[ ]可接收的字符列表
[^]不可接受的字符列表
-连字符

案例:

  • [abc]:匹配abc中任意一个字符
  • [^0123456789] :匹配文本中数字以外的任意单个字符,同[^\d]
  • [A-Z] :匹配任意单个大写字母
  • [0-9a-z]:匹配任意单个小写字母或数字
  • [\w\W]:匹配任意字符

转义符(Escape Character)
使特殊字符失去特殊意义,被视为普通字符。

符号含义
\随后的字符应该被解释为字面量字符

需要用到转义符的字符有:.*+()$/\?[]^{},当特殊字符是在[]中时,不需要使用转义符

案例:

  • 0\.\d*[1-9]:匹配一个小于0的小数

定位符(Anchors)
规定要匹配的字符串出现的位置,比如目标字符串是在文本的开始或者结束位置。

符号含义
\b匹配目标字符串的边界,这里边界指的是子串之间的空格,或者文本的前后边界
\B匹配目标字符串的非边界
^匹配输入字符开始的位置
$匹配输入字符结束的位置

案例:

  • \bHello\b :匹配文本位于开头和结尾位置的Hello 例如:在"Hello HelloWorld"文本中只能匹配到第一个Hello
  • ^[abc] : 匹配文本中以abc中的一个字符开头的字符串
  • ^\d\d\d\d\d\d$ :匹配文本是否是由六个数字组成的字符串 例如: 123456、000000

分组符(Grouping )
字符分组多用于将多个字符重复,主要通过使用小括号()来进行分组

符号含义
()用于分组

案例:

  • (\d{4})-(\d{2})-(\d{2}) :匹配一个日期格式(如 YYYY-MM-DD),并将年、月、日分别分组。

懒惰匹配符(Non-greedy Quantifiers)
正则表达式默认是采用贪婪匹配,当正则表达式中包含重复的限定符时,匹配尽可能多的字符。可以通过设置为懒惰匹配,匹配尽可能少的字符。

符号含义
?字符尽可能少地匹配

使用时与限定符号结合使用:比如*?{n,m}?,尽可能少的去匹配。
案例:

  • 1\d*?3,在匹配文本123123123时,通过懒惰匹配会匹配到三个123
  • \(.*?\),在匹配文本()()()()时,通过懒惰匹配会匹配到四个括号

选择匹配符(Choice Meta-characters)
匹配某种字符串的时候是选择性的,既可以匹配这个,又可以匹配那个。

符号含义
表示逻辑“或”,用于选择多个选项

案例:

  • (a|b):匹配字符a或者匹配字符b
  • (ab)|(cd):匹配字符ab或者匹配字符cd

相关文章:

正则表达式快速入门

正则表达式是由一系列元字符(Meta-characters)组成的模式,用于定义搜索或替换文本的规则。元字符具有特殊含义,用于指定搜索模式的结构。以下是一些常用的正则表达式元字符及其功能: 字符匹配符 符号含义.匹配除 \r\…...

【小程序】-基础语法(二)

文章目录 知识回顾前言微信小程序开发一、模板语法2.1 数据绑定2.2 条件渲染2.3 列表渲染三、内置API3.1 网络请求3.2 界面交互3.3 本地存储3.4 API 特征3.5 相册/拍照3.6 小练习四、事件处理4.1 事件对象4.2 组件事件五、生命周期5.1 页面生命周期5.2 应用生命周期知识回顾 前…...

js 填充数组

let arr Array.from({ length: 10 }, (_, index) > index)console.log(arr) 人工智能学习网站 https://chat.xutongbao.top...

AI创作3款软件分享,助力内容创作者高效产出优质作品

为了增加创造力和作品质量,许多创作者开始利用人工智能辅助工具。这些工具不仅可以帮助我们迅速生成各种类型的内容,例如文章、绘画、视频广告等,还提供语法检查和优化建议等实用功能。本文将向大家推荐三款适用于Ai先行者、Tracup、Adoe Fir…...

A survey of loss functions for semantic segmentation——论文笔记

摘要 图像分割一直是一个活跃的研究领域,因为它有着广泛的应用范围,从自动疾病检测到自动驾驶汽车。过去五年中,各种论文提出了用于不同场景(如数据偏斜、稀疏分割等)的目标损失函数。在本文中,我们总结了…...

docker部署es与kibana Mac

1. 创建网络 神一样的链接,不用谢: 1.Docker命令链接:黑马整理的docker速成链接 2.jdk11链接:jdk11 3.神资源链接:别点,要脸 注意:es需要先安装jdk环境,推荐jdk11,否则…...

redis的渐进式哈希?说一下细节?------面试题分享

渐进式哈希(Progressive Hashing)是 Redis 中的一种优化机制,用于在执行 HGETALL 命令时逐步读取哈希表中的所有字段。这种机制避免了一次性加载大量数据到内存,从而减少了内存消耗和提高系统的响应速度。 渐进式哈希的背景 在 R…...

javaWeb项目-springboot+vue-车辆管理系统功能介绍

本项目源码(点击下方链接下载):java-springbootvue车辆管理系统源码(项目源码-说明文档)资源-CSDN文库 项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端&#xff1…...

redis和memcached的区别

Redis和Memcached都是流行的内存缓存数据库,但它们有一些区别: 数据类型:Redis支持更多的数据类型,包括字符串、哈希、列表、集合和有序集合等,而Memcached只支持简单的键值对。 持久化:Redis支持数据的持…...

构建安全基石:网络安全等级保护定级指南

在数字化时代,网络安全已成为企业与个人不可忽视的重要课题。网络安全等级保护定级指南,作为国家指导网络安全保护的重要文件,为各类机构提供了精准的安全防护蓝图。本文旨在深度解析网络安全等级保护定级指南的精髓,助力建构全面…...

PyQt 入门教程(3)基础知识 | 3.1、使用QtDesigner创建.ui文件

文章目录 一、使用QtDesigner创建.ui文件1、创建.ui文件2、生成.py文件3、使用新生成的.py文件4、编辑新生成的.py文件 一、使用QtDesigner创建.ui文件 1、创建.ui文件 打开PyCharm,使用自定义外部工具QtDesigner创建mydialog.ui文件,如下: …...

解锁金融大门,你的基从备考秘籍全揭秘!

大家好!随着金融行业的快速发展,基金从业资格证已经成为越来越多金融从业者的必备证书。为了帮助大家更好地备考,今天我们就来聊聊基金从业资格证! 一、考试时间 2024年下半年基金从业资格考试时间为11月9日。准考证打印的时间是…...

详解Linux系统中的设备驱动程序.ko文件

目录 一、主要特点: 二、常见用法: 三、典型应用: 设备驱动程序、文件系统、网络协议、内核安全模块等都可能以 .ko 文件的形式存在。 .ko 文件是 Linux 内核模块的文件扩展名,表示 "kernel object"。这些文…...

MG协议转换器:高效连接,智控未来

在当今自动化和工业4.0浪潮中,设备间的无缝连接和数据高效传输成为提升生产效率、保障系统稳定运行的关键。我们凭借在工业自动化领域的深厚积累与创新精神,推出了MG系列一体式协议转换器,为不同协议总线之间的通讯架起了一座坚实的桥梁。 产…...

pycharm设置自动格式化代码

1.手动格式化代码: 在PyCharm中,您可以使用快捷键Ctrl + Alt + L来格式化当前文件中的代码。此操作将根据PyCharm默认的代码风格规则对代码进行格式化。 您也可以在“File”菜单中选择“Reformat Code”选项来进行格式化。 2.自动格式化代码 2.1 安装File Watchers插件 F…...

AI应用程序低代码构建平台Langflow

什么是 Langflow ? Langflow 是一款适用于 RAG 和多智能体 AI 应用程序的低代码应用构建器。它基于 Python,并且与任何模型、API 或数据库无关。 软件的核心功能 基于 Python 并且与模型、API、数据源或数据库无关。可视化集成开发环境,支持拖放构建和…...

QT-使用QSS美化UI界面

一、QSS简介: Qt Style Sheet:Qt样式表,用来自定义控件外观的一种机制,可以把他类比成CSS(CSS主要功能与最终目的都是能使界面的表现与界面的元素分离)。QSS机制使应用程序也能像web界面那样随意地改变外观…...

【程序员笔记】-- 常用开发工具汇总

背景:正所谓磨刀不误砍柴工,作为一个程序员,这一点也是非常重要的,十年软件开发老炮,开发过网站、桌面程序、中间件、手机APP、微信小程序、自动化脚本等,和小伙伴们分享一下常用的开发工具,一直…...

基于SSM考研助手系统的设计

管理员账户功能包括:系统首页,个人中心,学生管理,教学秘书管理,考研资讯管理,考研名师管理,考研信息管理,系统管理 教学秘书账号功能包括:系统首页,个人中心…...

【MacOS】RocketMQ 搭建Java客户端

【MacOS】RocketMQ 搭建Java客户端 文章目录 【MacOS】RocketMQ 搭建Java客户端一、引入RocketMQ客户端依赖1.maven工程,在你的pom.xml中添加RocketMQ客户端依赖:2.gradle工程添加库 二、创建生产者和消费者1.创建一个生产者消费者1.创建一个PullConsume…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言:多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...