正则表达式解析与应用:深度剖析正则表达式的威力

news2024/11/18 13:35:47

在这里插入图片描述

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》本专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

正则表达式解析与应用:深度剖析正则表达式的威力

  • 概述
  • 正则表达式简介
  • 正则表达式的基本语法
  • 正则表达式的高级语法
  • 实战应用示例
        • 提取图片标签中的链接
        • 匹配IPv4地址
        • 匹配HTML注释
        • 邮箱验证
        • URL提取
        • HTML标签匹配
        • 验证身份证号(15位或18位数字)
        • 验证手机号码
        • 只能输入数字
        • 验证域名
  • 总结

概述

正则表达式是一种强大的文本匹配和处理工具,它在各种编程语言和文本编辑器中广泛应用。本文将深入解析正则表达式的概念、语法、常见用法以及在实际应用中的技巧。

正则表达式简介

正则表达式是一种用于描述字符串模式的表达式。它可以用来匹配、查找、替换文本中的字符串,具有强大而灵活的文本处理能力。正则表达式不仅仅是一种语法,更是一种强大的字符串处理思维方式。

正则表达式的基本语法

字符类

普通字符: 例如,a 匹配字符 a
转义字符: 使用反斜杠\转义特殊字符,如 \.匹配点号 .

元字符

.(点号): 匹配任意字符,除了换行符
^ 匹配字符串的开始
$ 匹配字符串的结束

字符集合

[...] 匹配括号内的任意一个字符
[^...] 匹配除了括号内字符的任意一个字符

量词

* 匹配前一个元素零次或多次
+ 匹配前一个元素一次或多次
? 匹配前一个元素零次或一次
{n} 匹配前一个元素恰好 n 次
{n,} 匹配前一个元素至少 n 次
{n,m} 匹配前一个元素至少 n 次但不超过 m 次

正则表达式的高级语法

转义与原始字符串
在正则表达式中,某些字符有特殊含义,如 .* 等。如果想匹配这些字符本身,需要使用反斜杠进行转义。在某些编程语言中,为了简化正则表达式的书写,还可以使用原始字符串(Raw String)来避免双重转义。例如,在Python中:

# 非原始字符串
pattern = "\\d+"

# 原始字符串
pattern_raw = r"\d+"

非捕获分组
有时我们需要使用分组来对正则表达式的一部分进行重复,但又不希望捕获这个分组,可以使用非捕获分组 (?:...)。例如:

(?:https?://)?([^/\s]+)(/[^\s]*)?

上述正则表达式可以匹配 URL,但只捕获了主机名和路径,而不捕获协议部分。

后向引用
后向引用允许在正则表达式中引用先前匹配的子表达式,使用 \1\2等来表示。这在需要匹配对称字符(如括号)或重复出现的模式时非常有用。例如:

(\w)\1

上述正则表达式匹配连续两个相同的字母。

零宽断言
零宽断言是一种先行或后顾条件的匹配,但并不包含在最终的匹配结果中。它包括正向先行断言 (?=...)、负向先行断言 (?!...)、正向后顾断言 (?<=...) 和负向后顾断言 (?<!...)。例如:

(?<=@)\w+

上述正则表达式匹配 @ 后面的字母字符,但不包括 @。

命名分组
为了方便引用,我们可以给分组命名,使用 (?<name>...)(?'name'...)。例如:

(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})

实战应用示例

提取图片标签中的链接
<img[^>]*src=['"]([^'"]+)['"][^>]*>
匹配IPv4地址
\b(?:\d{1,3}\.){3}\d{1,3}\b
匹配HTML注释
<!--.*?-->
邮箱验证
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
URL提取
https?://[^\s]+
HTML标签匹配
<[^>]+>
验证身份证号(15位或18位数字)
^\d{15}|\d{18}$
验证手机号码
^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$ 
只能输入数字
//限制只能输入数字
^[0-9]*$
//整数或者小数
^[0-9]+\.{0,1}[0-9]{0,2}$
验证域名
[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.? 

总结

正则表达式作为文本处理的得力助手,在处理字符串时展现出强大的功能。通过深入理解正则表达式的语法和技巧,我们能更加高效地进行文本处理和匹配,为程序开发、数据清理等场景提供强大的支持。希望通过本文的介绍,大家能够更加深入地掌握正则表达式的使用方法,发挥其强大的匹配和处理能力。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytorch机器学习各种激活函数总结(不完整学习更新中~)

pytorch各种激活函数总结 0.思维导图预览1. ReLU函数1.1 改进版ReLU6函数 2. Sigmoid函数3. Softmax函数4. Tanh函数5.&#xff08;学习后更新&#xff09; 0.思维导图预览 1. ReLU函数 ReLU&#xff08;Rectified Linear Unit&#xff09;线性整流函数 其公式为&#xff1a; …

常用API(String,StringBuilder,StringJoiner)

文章目录 1.API1.1API概述1.2如何使用API帮助文档 2.String类2.1String类概述2.2String类的特点2.3String类的构造方法2.4创建字符串对象两种方式的区别2.5字符串的比较2.5.1号的作用2.5.2equals方法的作用 2.6用户登录案例2.6.1案例需求2.6.2代码实现 2.7遍历字符串案例2.7.1案…

软件测试|SQL AND和OR运算符解析

简介 在SQL&#xff08;Structured Query Language&#xff09;中&#xff0c;AND和OR是两个常用的逻辑运算符。它们用于组合条件来构建复杂的查询语句&#xff0c;帮助我们更精确地过滤和检索数据。本文将详细介绍SQL中的AND和OR运算符&#xff0c;包括其语法、用法以及使用时…

数据结构学习 jz63股票的最大利润

关键词&#xff1a;动态规划 滚动数组优化 这题不要被动态规划吓到了&#xff0c;其实很简单。 用时16min 题目&#xff1a; 思路&#xff1a; 最大利润的实现办法&#xff1a;在最低的时候买入&#xff0c;在最高的时候卖出。 dp状态&#xff1a; dp[i]第i天如果卖出的最…

uniapp中组件库的Checkbox 复选框 的丰富使用方法

目录 #平台差异说明 #基本使用 #自定义形状 #禁用checkbox #自定义形状 #自定义颜色 #横向排列形式 #横向两端排列形式 API #Checkbox Props #CheckboxGroup Props #CheckboxGroup Event 复选框组件一般用于需要多个选择的场景&#xff0c;该组件功能完整&#xff…

STM32疑难杂症

1.keil的奇怪问题 创建的数组分配内存到0x10000000地址的时候,数据总是莫名其妙的出现问题,取消勾选就正常了 stm32f407内部有一个CCM内存,这部分内存只能由内核控制,任何外设都不能够进行访问。这样问题就来了,如果使用keil5进行编程时勾选了这个选项(下图),则编译的…

八、Lua脚本详解—— 超详细操作演示!

八、Lua脚本详解 —— 超详细操作演示&#xff01; 八、Lua脚本详解8.1 Lua 简介8.2 Linux 系统的Lua8.2.1 Lua 下载8.2.2 Lua 安装8.2.3 Hello World 8.3 Win 系统的Lua8.4 Lua 脚本基础8.4.1 注释8.4.2 数据类型8.4.3 标识符8.4.4 运算符8.4.5 函数8.4.6 流程控制语句8.4.7 循…

2021-05-08 51单片机74HC164、74LS164、74HCT164、74HC154、74HCT154应用三极管控制继电器

74HC164、74HCT164是8位边沿触发式移位寄存器&#xff0c;串行输入数据&#xff0c;然后并行输出。数据通过两个输入端&#xff08;DSA或DSB&#xff09;之一串行输入&#xff1b;任一输入端可以用作高电平使能端&#xff0c;控制另一输入端的数据输入。两个输入端或者连接在一…

IMS SIP register消息中的Contact header field

SIP register中的Contact还要承载User Agent的能力信息。 实网下抓取的UE log如上&#xff0c;下面就主要看下Contact header field要包含的内容及其含义。 Contact header field设置为包括 UE IP地址或FQDN的SIP URI。 如上图contact中sip:69a5de6a-a03e-46d6-ad7a-b0d974c8f…

大创项目推荐 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步&#xff1a;将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

函数式编程及应用

目录 什么是Lambdalambda表达式的类型及实现方式类型语法 常用函数式接口Customer 函数式编程在Stream中的应用总结参考资料 什么是Lambda Lambda 表达式是 JDK8 的一个新特性&#xff0c;可以取代大部分的匿名内部类&#xff0c;写出更优雅的Java代码。 Lambda 表达式描述了一…

图片剪切软件,让图片处理更加高效

随着数字技术的不断发展&#xff0c;图片剪切也在不断进步。从手动裁剪到自动识别&#xff0c;图片剪切正变得越来越简单、高效&#xff0c;在这里面&#xff0c;图片处理软件的作用是不可忽视的。 所需工具&#xff1a; 一个【首助编辑高手】软件 需要剪切的图片 操作步骤…

【python】魔术方法大全(一)--基础篇

如果对你有帮助&#xff0c;欢迎微信搜索【海哥python】关注这个互联网苟且偷生的工具人。 什么是魔术方法 所谓魔法方法&#xff0c;它的官方的名字实际上叫special method&#xff0c;是Python的一种高级语法&#xff0c;允许你在类中自定义函数&#xff0c;并绑定到类的特殊…

Weblogic安全漫谈(四)

黑名单机制必然会推动两种研究方向的发展&#xff1a;一是挖掘不在黑名单的新组件&#xff0c;是为绕过规则&#xff1b;二是发掘检查的盲区&#xff0c;是为绕过逻辑。 CVE-2020-14756 二次反序列化具有对抗检查逻辑的天生丽质&#xff0c;在CVE-2018-2893中就有利用字节数组…

Kubeadmin实现k8s集群:

Kubeadmin来快速搭建一个k8s集群&#xff1a; 二进制搭建适合大集群&#xff0c;50台以上的主机&#xff0c; 但是kubeadm更适合中小企业的业务集群 环境&#xff1a; Master&#xff1a;20.0.0.71 2核4G 或者4核8G docker kubelet kubectl flannel Node1&#xff1a;20.…

面试题:vue2中option API的和vue3中composition API中的数据和方法能否交互?

结论&#xff1a; vue2中option API中的数据和方法可以从vue3中的composition API中进行调用&#xff0c; 而vue3中的composition API是不可以从vue2中的数据进行调用。 原理&#xff1a; 因为composition API中的函数setup在页面的生命周期中要比vue2中option API中的data、…

MR实战:词频统计

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、创建Maven项目2、添加相关依赖3、创建日志属性文件4、创建词频统计映射器类5、创建词频统计归并…

六、Spring 声明式事务

本章概要 声明式事务概念 编程式事务声明式事务Spring事务管理器 基于注解的声明式事务 准备工作基本事务控制事务属性&#xff1a;只读事务属性&#xff1a;超时时间事务属性&#xff1a;事务异常事务属性&#xff1a;事务隔离级别事务属性&#xff1a;事务传播行为 6.1 声…

phpstudy_pro 关于多版本php的问题

我在phpstudy中安装了多个PHP版本 我希望不同的网站可以对应不同的PHP版本&#xff0c;则在nginx配置文件中需要知道不同的PHP版本的监听端口是多少&#xff0c;如下图所示 然而找遍了php.ini配置&#xff0c;并未对listen进行设置&#xff0c;好奇是怎么实现不同的PHP监听不同…

AI交互提示工程指南技术

简述: 当今互联网行业对于AI提示工程的需求日益增长,而《AI提示工程指南》是一本旨在满足这种需求的宝贵指南。本指南由一位对AI提示工程充满热情并自学而来的互联网从业者撰写,旨在为行业人员提供一个全面、易懂的参考手册。 这本指南将引领您踏上AI提示工程的旅程,深入探…