正则表达式是用于处理字符串的强大工具,以下是一些常用正则表达式的汇总:,1. 字符匹配:[abc]
匹配任意一个字符(a、b或c)。,2. 范围匹配:[a-z]
匹配任意小写字母。,3. 负向匹配:[^abc]
匹配除a、b、c之外的任意字符。,4. 数量匹配:a*
匹配任意数量的a(包括0个)。,5. 选择匹配:a|b
匹配a或b。,6. 定位匹配:^a
匹配字符串开头为a。,7. 反向定位:a$
匹配字符串结尾为a。,8. 贪婪匹配:.*
匹配任意数量的任意字符。,9. 非贪婪匹配:.*?
匹配尽可能少的任意字符。,10. 分组匹配:(a)
将a作为一个整体进行匹配。,这些正则表达式可以帮助您高效地进行字符串匹配、查找和替换操作。
嗨,我最近在学习正则表达式,但是感觉有点乱,不知道哪些是常用的,哪些是必须掌握的,你能帮我整理一下常用的正则表达式汇总吗?我想快速提升我的技能。
匹配任意数字:
\d
\d
匹配任何单个数字,相当于 [0-9]
。匹配指定范围的数字:
[0-9]{3,5}
或 \d{3,5}
{3,5}
表示匹配前面的字符(在这里是数字)至少3次,但不超过5次。匹配数字和字母的组合:
[A-Za-z0-9]+
[A-Za-z0-9]
匹配任何字母或数字, 表示匹配一个或多个这样的字符。匹配中文字符:
[\u4e00-\u9fa5]+
[\u4e00-\u9fa5]
匹配任何中文字符。匹配英文中的空格:
\s
\s
匹配任何空白字符,包括空格、制表符、换行符等。匹配邮箱地址:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
匹配以特定字符开头的字符串:
^abc.*
^
表示匹配字符串的开始,abc
是指定的开头字符, 表示匹配任意字符(除了换行符)任意次。匹配以特定字符结尾的字符串:
.*abc$
abc
是指定的结尾字符。匹配包含特定子串的字符串:
.*\bexample\b.*
\b
表示单词边界,example
是要匹配的子串。使用分组和捕获:
(abc|def)\d+
(abc|def)
表示匹配 abc
或 def
,\d+
表示匹配一个或多个数字,分组中的内容可以用 $1
、$2
等引用。使用量词和否定:
[a-z]*[A-Z]+
[a-z]*
表示匹配零个或多个小写字母,[A-Z]+
表示匹配一个或多个大写字母。使用预定义字符集:
\d{3}-\d{2}-\d{4}
\d
匹配数字,{3}
、{2}
、{4}
表示匹配前面的字符指定次数, 是字面量字符。数据验证:
文本搜索和替换:
数据清洗:
通过以上常用正则表达式的汇总,相信你已经对正则表达式有了更深入的了解,掌握这些正则表达式,将大大提高你在数据处理和文本处理方面的效率。
其他相关扩展阅读资料参考文献:
正则表达式是处理文本数据的利器,广泛应用于数据清洗、格式校验、字符串提取等场景,掌握常用正则表达式能显著提升开发效率,本文从基础语法、常用场景、高级技巧三个方向展开,结合具体案例深入解析。
基础语法:构建正则表达式的核心要素
1 字符匹配
正则表达式通过字符集匹配特定内容,如[a-zA-Z0-9]
匹配字母和数字,[^\s]
匹配非空格字符。注意:使用^
和可限定匹配范围,如^\d{3}-\d{4}-\d{4}$
匹配固定格式的身份证号。
2 量词控制匹配次数
表示匹配0次或多次,表示至少1次,表示0或1次。例如:[a-z]+
匹配连续字母,\.com
匹配域名后缀。注意:贪婪匹配可能导致误判,需用转为非贪婪模式。
3 分组与捕获
通过将多个字符组合为一个单元,如(http|https)://
提取协议类型。捕获组可后续引用,如(\d{3})-(\d{4})
提取电话号码的区号和号码部分。注意:非捕获组适用于仅分组不提取的场景。
常用场景:正则表达式的实际应用
1 验证邮箱格式
标准邮箱正则为^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
。注意:需区分@符号和域名分隔符,避免匹配如user@domain
的无效格式。
2 提取URL链接
匹配https?://
开头的URL,如https?://\S+
。注意:\.com
需转义,防止与普通点号混淆。扩展:可结合分组提取协议、域名和路径,如(?:https?://)?([^/\s]+)
。
3 格式化文本
用正则替换格式,如将"2023-10-05"
转换为"2023年10月05日"
,正则为(\d{4})-(\d{2})-(\d{2})
,替换为\1年\2月\3日
。注意:替换时需使用反向引用\1
、\2
等。
高级技巧:提升正则表达式效率与灵活性
1 正向预查与反向引用
正向预查用于匹配前缀,如(?=\d{3})
确保数字前有三位数。反向引用\1
可复用已匹配内容,如(\d{3})-\1
匹配重复三位数的字符串。
2 模式重用与命名分组
通过(?<name>...)
定义命名分组,如(?<year>\d{4})
提取年份。注意:命名分组提升可读性,尤其在复杂模式中。
3 多行匹配与修饰符
使用m
修饰符使^
和匹配每行开头结尾,如^abc
在多行文本中仅匹配第一行。注意:s
修饰符可让匹配换行符,适用于处理多行字符串。
常见陷阱:避免正则表达式误用
1 特殊字符需转义
如、、等符号需用\*
、\+
等转义,否则会被视为量词。例如:匹配号需写成\*
。
2 贪婪匹配导致问题
默认贪婪模式可能匹配过长内容,如<.*>
会匹配整个HTML标签。解决:添加转为非贪婪模式,如<.*?>
。
3 忽略编码与边界条件
正则表达式对编码敏感,如中文字符需用[\u4e00-\u9fa5]
匹配。注意:避免因边界条件缺失导致误匹配,如^abc$
确保整串匹配。
正则表达式的核心在于精准匹配与灵活应用,掌握基础语法、熟悉常用场景、善用高级技巧,能有效应对复杂文本处理需求,规避常见陷阱可避免因小失大。建议:多通过实际案例练习,逐步积累经验,才能真正发挥正则表达式的强大功能。
本在线随机数生成器是一款便捷的数字随机生成工具,用户可自定义生成范围、数量及类型(整数、浮点数等),支持一键复制和导出功能,广泛应用于抽奖、密码生成、数据分析等领域,操作简单,无需安装,即点即用。 大家好,我最近在做一个项目,需要用到随机数生成器,但是我不太懂编程,所以想找一个在线版的随机数生成器...
这是一个专门针对程序员招聘和求职的网站,该平台汇集了丰富的职位信息,包括软件开发、系统架构、前端开发等多个领域,用户可以在这里发布简历、搜索职位、参与在线面试,同时也有企业招聘团队发布招聘需求,提供便捷的线上交流与匹配服务,助力程序员找到理想的工作机会。你的职业加速器 真实用户解答: 大家好,我...
《单片机C语言程序设计实训100例》是一本专注于单片机C语言编程实践指导的书籍,本书通过100个精心设计的实例,地讲解了单片机编程的基础知识和技能,涵盖数据存储、I/O接口、定时器、中断系统等多个方面,书中实例丰富、步骤详尽,旨在帮助读者快速掌握单片机C语言编程,提升实践能力。 您好,我最近在准备...
学习C语言的费用因学习途径而异,若通过线上平台自学,费用可能在几十元到几百元不等,包括购买教材或付费课程,若参加培训班,费用则可能从几百元到几千元不等,具体取决于课程内容和时长,还需考虑个人投入的时间与精力。 大家好,我是刚刚入门C语言编程的小白,最近很多人问我学C语言要多少钱,这个问题其实挺复杂...
Oracle数据库的启动和关闭命令如下:,1. 启动数据库:, - 使用SQL*Plus工具,以系统权限登录。, - 输入命令:STARTUP, - 按照提示完成启动过程。,2. 关闭数据库:, - 使用SQL*Plus工具,以系统权限登录。, - 输入命令:SHUTDOWN,...
initstack函数通常用于初始化一个栈结构,该函数负责创建一个栈,并设置其初始状态,包括可能的最大容量、栈顶指针等,具体实现可能包括分配内存空间、设置栈顶指针为空或指向栈底、初始化栈的大小等,此函数是栈操作的基础,确保在执行其他栈操作(如压栈、弹栈等)前,栈已正确配置。 嗨,我最近在写一个栈的...