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

正则表达式完全指南:从入门到实战

目录

一、什么是正则表达式?

二、基础语法速查表

三、进阶特性

1.分组与捕获

2.非捕获分组

3.前瞻与后顾

4.贪婪与懒惰匹配

四、实战案例

案例1:验证手机号

案例2:提取网页中所有链接

案例3:密码强度验证


一、什么是正则表达式?

正则表达式(Regular Expression)是一种描述字符串匹配模式的工具,通过特殊字符组合实现复杂文本的查找、替换和验证功能。

核心作用:

  • 文本搜索(查找特定模式)

  • 数据验证(如邮箱格式检查)

  • 文本替换(格式化数据)

  • 数据提取(爬虫中的信息抽取)

二、基础语法速查表

元字符描述示例
.匹配任意字符(除换行符)a.c 匹配 "abc", "a1c"
^匹配字符串开始^Hello 匹配 "Hello World" 开头
$匹配字符串结束world$ 匹配 "Hello world"
*匹配前一个字符0次或多次ab* 匹配 "a", "abbb"
+匹配前一个字符1次或多次ab+ 匹配 "ab", "abbb"
?匹配前一个字符0或1次colou?r 匹配 "color" 或 "colour"
{n}精确匹配n次a{3} 匹配 "aaa"
{n,}至少匹配n次a{2,} 匹配 "aa", "aaaa"
{n,m}匹配n到m次a{2,4} 匹配 "aa", "aaa"
[]字符集合[abc] 匹配 "a", "b", 或 "c"
[^]反向字符集合[^abc] 匹配除a/b/c外任意字符
\d匹配数字(0-9)\d{3} 匹配 "123"
\w匹配字母/数字/下划线\w+ 匹配 "hello_123"
\s匹配空白字符a\sb 匹配 "a b"

三、进阶特性

1.分组与捕获

# 匹配日期格式(YYYY-MM-DD)
(\d{4})-(\d{2})-(\d{2})
# 分组结果:
# Group 1: 年份
# Group 2: 月份
# Group 3: 日期

2.非捕获分组

# 仅分组不捕获
(?:https?)://[^\s]+

3.前瞻与后顾

# 正向前瞻:匹配后面跟着"元"的数字
\d+(?=元)# 负向前瞻:匹配后面不跟着"元"的数字
\d+(?!元)# 正向后顾:匹配前面是"价格:"的数字
(?<=价格:)\d+# 负向后顾:匹配前面不是"价格:"的数字
(?<!价格:)\d+

4.贪婪与懒惰匹配

# 贪婪匹配(默认)
<.*>  # 匹配 <div>content</div> 整个字符串# 懒惰匹配(加?)
<.*?>  # 只匹配 <div> 和 </div>

四、实战案例

案例1:验证手机号

^1[3-9]\d{9}$
  • ^1 以1开头
  • [3-9] 第二位为3-9
  • \d{9} 后面跟9为数字

案例2:提取网页中所有链接

<a\s+(?:[^>]*?\s+)?href=(["'])(.*?)\1

捕获组2即为链接地址

案例3:密码强度验证

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

要求: 

  • 至少8位
  • 包含大小写字母
  • 包含数字和特殊字符
http://www.lryc.cn/news/592072.html

相关文章:

  • Kotlin集合分组
  • 黑马Node.js全套入门教程,nodejs新教程含es6模块化+npm+express+webpack+promise等_ts对象笔记
  • Kotlin集合过滤
  • 【Python】LEGB作用域 + re模块 + 正则表达式
  • uni-app 跳转页面传参
  • SpringCloud相关总结
  • 牛油果果实检测-目标检测数据集(真实环境下)
  • 基于SpringBoot 投票系统 【源码+LW+PPT+部署】
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 基于jieba实现词频统计
  • 在 React 中根据数值动态设置 SVG 线条粗细
  • Hadoop与云原生集成:弹性扩缩容与OSS存储分离架构深度解析
  • VSCode - VSCode 快速跳转标签页
  • 135. Java 泛型 - 无界通配符
  • Android CountDownTimer
  • Ubuntu系统下交叉编译Android的X265库
  • UVC for USBCamera in Android - 篇二
  • 股指期货的杠杆比例一般是多少?
  • 【软件系统架构】系列七:系统性能——路由器性能深入解析
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - jieba库分词简介及使用
  • 短视频矩阵系统哪家好?全面解析与推荐
  • 短视频矩阵系统:从源头到开发的全面解析
  • 【unity实战】使用unity的Navigation+LineRenderer实现一个3D人物寻路提前指示预测移动轨迹的效果,并可以适配不同的地形
  • Charles 中文版介绍与使用指南 强大抓包工具助力 API 调试与网络优化
  • 网络编程(modbus,3握4挥)
  • 新书推介 | 吉林大学出版教材《汽车智能辅助驾驶系统技术》,国产仿真工具链GCKontrol-GCAir教学应用
  • mybatisdemo(黑马)
  • S7-1200 Profinet 的诊断功能
  • 嵌入式教育的云端革命:零边界实验室如何重塑未来工程师
  • 硬核电子工程:从硅片到系统的全栈实战指南—— 融合电路理论、嵌入式开发与PCB设计的工程艺术
  • 第三章自定义检视面板_创建自定义编辑器类_检测与应用修改(本章进度(2/9))