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

发布于:2025-07-21 ⋅ 阅读:(22) ⋅ 点赞:(0)

目录

一、什么是正则表达式?

二、基础语法速查表

三、进阶特性

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位
  • 包含大小写字母
  • 包含数字和特殊字符

网站公告

今日签到

点亮在社区的每一天
去签到