正则表达式详细讲解

目录

一、正则表达式概念

二、八元素

1、普通字符:

2、元字符:

3、通配符 .:

4、字符类 []:

5、量词:

6、锚点 ^ 和 $:

7、捕获组 ():

8、转义字符 \:

三、日常使用的正则表达式

1、邮箱

2、电话(美国)

3、URL

4、日期(YYYY-MM-DD)

5、IP地址

6、用户名(仅包含字母和数字,且长度为6-12字符)

7、密码(包含大小写字母、数字、特殊字符,且长度为8-16个字符)

总结

我的其他博客


一、正则表达式概念

正则表达式(Regular Expression,简称Regex或RegExp)是一种用于描述字符串模式的表达式。它提供了一种灵活的方式来进行字符串的匹配、搜索、替换和提取操作。正则表达式是由普通字符和元字符(metacharacters)组成的字符串,这些元字符具有特殊的意义,用于定义匹配规则。

以下是正则表达式的一些基本概念和元素:

  1. 普通字符: 表达式中的普通字符(例如字母、数字、符号)表示它们自身,只有它们自身与输入字符串中的字符匹配。

  2. 元字符: 元字符是具有特殊含义的字符,它们用于构建匹配模式。例如,*+.^$ 等都是元字符。

  3. 通配符: .(点)是一个通配符,匹配任意单个字符,除了换行符。

  4. 字符类: 方括号 [] 用于定义一个字符类,匹配其中任意一个字符。例如,[aeiou] 可以匹配任何一个元音字母。

  5. 量词: 量词用于指定匹配模式中字符的数量。例如,* 表示零个或多个,+ 表示一个或多个,? 表示零个或一个。

  6. 锚点: ^(脱字符)用于匹配字符串的开头,$ 用于匹配字符串的结尾。

  7. 捕获组: 使用圆括号 () 可以创建捕获组,用于分组并记住匹配的子表达式。捕获组允许你提取匹配的部分。

  8. 转义字符: 反斜杠 \ 用于转义元字符,使其失去特殊含义,匹配字符本身。例如,\. 匹配实际的点字符。

正则表达式的语法因编程语言而异,但基本的概念和元素在大多数语言中是相似的。许多编程语言(如Python、JavaScript、Java)都提供了内置的正则表达式支持。正则表达式是一个强大而灵活的工具,但有时也可能变得复杂,特别是对于复杂的匹配模式。

二、八元素

1、普通字符:

普通字符是正则表达式中的字母、数字、符号等,它们表示它们自身。例如,正则表达式中的 a 将精确匹配字符串中的字母 "a"。

2、元字符:

元字符是具有特殊含义的字符,用于构建匹配模式。一些常见的元字符包括:

  • .:匹配任意单个字符(除了换行符)。
  • *:匹配前一个字符的零个或多个实例。
  • +:匹配前一个字符的一个或多个实例。
  • ?:匹配前一个字符的零个或一个实例。
  • ^:匹配字符串的开始。
  • $:匹配字符串的结束。
  • []:定义字符类,匹配其中任意一个字符。
  • ():创建捕获组。

3、通配符 .

点号 . 是一个通配符,用于匹配任意单个字符,除了换行符。例如,正则表达式 a.c 可以匹配 "abc"、"adc"、"a1c" 等。

4、字符类 []

字符类用于定义一个字符集合,匹配其中的任意一个字符。例如,正则表达式 [aeiou] 匹配任何一个元音字母。

5、量词:

  • 量词用于指定字符或字符类的重复次数。
    • *:匹配前一个字符的零个或多个实例。
    • +:匹配前一个字符的一个或多个实例。
    • ?:匹配前一个字符的零个或一个实例。
  • 例如,正则表达式 \d+ 可以匹配一个或多个数字。

6、锚点 ^$

^ 用于匹配字符串的开始,$ 用于匹配字符串的结束。例如,正则表达式 ^start 可以匹配以 "start" 开始的字符串。

7、捕获组 ()

捕获组用于创建子表达式,可以对其进行分组,以便后续引用或提取。例如,正则表达式 (\d+)-(\w+) 可以匹配像 "123-abc" 这样的字符串,并将数字和字母分别放入两个捕获组中。

8、转义字符 \

反斜杠 \ 用于转义元字符,使其失去特殊含义,匹配字符本身。例如,\. 可以匹配实际的点字符。

三、日常使用的正则表达式

1、邮箱

  • 正则表达式:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  • 用途:用于验证电子邮件地址的格式。

2、电话(美国)

  • 正则表达式:^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$
  • 用途:用于验证美国的电话号码格式,包括可选的括号、分隔符。

3、URL

  • 正则表达式:^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$
  • 用途:用于验证URL的格式。

4、日期(YYYY-MM-DD)

  • 正则表达式:^\d{4}-\d{2}-\d{2}$
  • 用途:用于验证日期的格式,例如:2023-12-07。

5、IP地址

  • 正则表达式:^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
  • 用途:用于验证IPv4地址的格式。

6、用户名(仅包含字母和数字,且长度为6-12字符)

  • 正则表达式:^[a-zA-Z0-9]{6,12}$
  • 用途:用于验证用户名的格式,只包含字母和数字,长度为6到12个字符。

7、密码(包含大小写字母、数字、特殊字符,且长度为8-16个字符)

  • 正则表达式:^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,16}$
  • 用途:用于验证密码的格式,包含大小写字母、数字和特殊字符,长度为8到16个字符。

总结

正则表达式是一项强大而灵活的技能,它在许多编程语言和文本编辑器中都有广泛的应用。熟练地使用正则表达式可以大大提高文本处理和字符串操作的效率

我的其他博客

HTTP与HTTTPS的区别-CSDN博客

 

什么情况下会产生StackOverflowError(栈溢出)和OutOfMemoryError(堆溢出)怎么排查-CSDN博客

谈谈我对HashMap扩容机制的理解及底层实现-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/215207.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

股市复苏中的明懿金汇:抓住新机遇

2023年对于明懿金汇来说是充满挑战与机遇的一年。面对复杂多变的市场环境,明懿金汇展现了其对市场趋势的敏锐洞察和卓越的策略适应能力。以下是该公司在2023年的主要投资策略和市场适应方式的详细分析。 随着2023年中国股市迎来反弹,明懿金汇迅速调整了…

Linux网络——高级IO

目录 一.五种IO模型 1.阻塞式IO 2.非阻塞式IO 3.信号驱动IO 4.多路转接IO: 5.异步IO 二.同步通信 vs 异步通信 三.设置非阻塞IO 1.阻塞 vs 非阻塞 2.非阻塞IO 3.实现函数SetNoBlock 四.I/O多路转接之select 1.初识select 2.select函数原型 3.socket就绪…

国内大厂机器人赛道产品

大疆 大疆无人机自然不必说,除此之外大疆搞机甲大师,教育机器人。 字节 当前字节在机器人领域只是初步探索阶段,目前尚未发布相关产品(截止至23.12)。 管理层想法: 跟已有业务做结合,服务好…

Axure->Axure安装,Axure菜单栏和工具栏功能介绍,页面及概要区

Axure安装Axure菜单栏和工具栏功能介绍,页面及概要区 1.Axure安装 即时设计 - 可实时协作的专业 UI 设计工具 (js.design) 点击上方下载安装⬆ 打开软件点击帮助->管理授权-> 被授权人 Axure 授权密钥:gjqpIxSSUUqFwPoZPi8XwBBhRE2VNmOQsrord0JqShk4QCXxrw6…

CLion安装与配置教程

目录 一、下载并安装CLion1、下载1、官网:2、注意: 2、安装1、下载完成后,直接点击安装包安装,即可。2、开始安装,然后下一步3、可以在此处自定义地址,然后下一步4、根据系统版本选择,然后下一步…

LeetCode5.最长回文子串

昨天和之前打比赛的队友聊天,他说他面百度面到这道算法题,然后他用暴力法解的,面试官让他优化他没优化出来,这道题我之前没写过,我就想看看我能不能用效率高一点的方法把它做出来,我一开始就在想用递归或者…

31、卷积 - 参数 dilation 以及空洞卷积

在卷积算法中,还有一个不常见的参数叫做dilation(中文:膨胀)。 很多同学可能没听说过这个参数,下面看看这个参数有什么作用,用来控制什么的。 我们还是放这个经典的卷积运算图,图中是看不出 dilation 这个参数的存在的。 如果再换一张图呢,发现两图的区别了吗? 没错…

设计模式篇---代理模式

文章目录 概念结构实例静态代理动态代理 总结 概念 代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。 比如我们想从其他国家买东西,但我们无法直接联系外国的商家,可以找代理商,让他们…

学习人工智能-基础篇

背景 随着大模型的火爆,人工智能再次被推到高潮,其实它在众多行业领域已经落地很多应用,并给社会带来了巨大的经济价值。其中包括互联网、教育、金融、医疗、交通、物流等等。在测试领域也有一些落地的案例,作为测试人员&#xf…

机器学习-逻辑回归

一、引言 逻辑回归(Logistic Regression)是一种广泛应用于分类问题的监督学习算法。尽管名字中含有“回归”二字,但这并不意味着它用于解决回归问题。相反,逻辑回归专注于解决二元或多元分类问题,如邮件是垃圾邮件还是…

2023-12学习笔记

1.NonNull要手动写无参构造器 这是一个我今天研究了很久的问题,开始不知道原因是在这里,还在那想是不是Data覆盖了无参构造,结果当然不是。先说下解决历程 1.问题起因 通过RequestBody接收前端报文的时候报错,大致是说我构造方…

热电厂发电机组常见故障及预测性维护方法

热电厂的发电机组是关键的能源生产设备,在电力供应中扮演着关键角色。但经过长期运行和高负荷工作,一旦发生故障,可能导致停机、设备损坏甚至引发严重事故。因此,实施有效的预测性维护方法对于确保发电机组的稳定运行至关重要。本…

Python从入门到精通五:Python数据容器

数据容器入门 为什么学习数据容器 思考一个问题:如果我想要在程序中,记录5名学生的信息,如姓名。 如何做呢? 学习数据容器,就是为了批量存储或批量使用多份数据 Python中的数据容器: 一种可以容纳多份…

gitee对接使用

1.创建一个文件夹 2.进入Gitee接受对方项目编辑 3.打开终端初始化一开始创建的文件夹 git init 3.1打开终端 3.2输入git.init 4.克隆对方的项目 4.1进入Gitee复制对方项目的路径 4.2在编辑器终端内克隆对方项目 git clone 网址 如此你的编辑器就会出现对方的项目 …

使用pe安装windows操作系统

一、系统安装前准备工作,制作系统盘 (1)拷贝电脑上的资料 (2)准备一个至少8G的U盘 (3)下载windows镜像文件及pe软件 通过百度网盘可下载下列软件及镜像 windows镜像文件(百度网盘…

如何通过SPI控制Peregrine的数控衰减器

概要 Peregrine的数控衰减器PE4312是6位射频数字步进衰减器(DSA,Digital Step Attenuator)工作频率覆盖1MHz~4GHz,插入损耗2dB左右,衰减步进0.5dB,最大衰减量为31.5dB,高达59dBm的IIP3提供了良好的动态性能,切换时间0.5微秒,供电电源2.3V~5.5V,逻辑控制兼容1.8V,20…

容器重启后,Conda文件完整保存(虚拟环境、库包),如何重新安装conda并迁移之前的虚拟环境

Vim安装 容器重启后默认是vi,升级vim,执行命令 apt install -y vim安装 Anaconda 1. 下载Anaconda 其他版本请查看Anaconda官方库 wget https://mirrors.bfsu.edu.cn/anaconda/archive/Anaconda3-2023.03-1-Linux-x86_64.sh --no-check-certificate…

HarmonyOS4.0从零开始的开发教程09页签切换

HarmonyOS(七)页签切换 List组件和Grid组件的使用 Tabs组件的使用 概述 在我们常用的应用中,经常会有视图内容切换的场景,来展示更加丰富的内容。比如下面这个页面,点击底部的页签的选项,可以实现“首页…

研表究明,文字的序顺并不定一能响影GPT-4读阅

深度学习自然语言处理 原创作者:yy 很多年前,你一定在互联网上看过这张图,展示了人脑能够阅读和理解打乱顺序的单词和句子!而最近东京大学的研究发现,大语言模型(LLMs) 尤其是 GPT-4&#xff0c…

MyBatisX插件

MyBatisX插件 MyBatis-Plus为我们提供了强大的mapper和service模板,能够大大的提高开发效率。 但是在真正开发过程中,MyBatis-Plus并不能为我们解决所有问题,例如一些复杂的SQL,多表联查,我们就需要自己去编写代码和SQ…