正则表达式教程零基础入门:语法符号详解+实战案例教学,新手快速上手指南

admin 综合编程开发技术 21


是不是有很多零基础的朋友一听到 “正则表达式” 就头疼?看着那些乱七八糟的符号 “\d+@\w+.\w+” 完全摸不着头脑,学了半天还是不会用在实际场景里;想验证个手机号、提取段文本里的邮箱,搜了教程抄代码,改个符号就报错。别愁,兔子哥当初学正则也是这样,光是搞懂 “.*?” 和 “.+?” 的区别就卡了两天,后来发现用对方法,正则其实没那么难。今天就带零基础的朋友从语法符号到实战案例,一步步入门,新手跟着学,快速掌握正则表达式!

一、先搞懂:正则表达式到底是啥?用在哪?


可能有朋友会问:“正则表达式听起来好复杂,学它有啥用?” 简单说,正则就是一种 “搜索模板”,能帮你快速在文本里找符合规律的内容,比如验证手机号格式对不对、从一大段文字里提取所有邮箱,比手动筛选高效 10 倍。
你平时注册账号时,输入手机号提示 “格式错误”,背后就是正则在验证;爬网页数据时,提取文章里的日期、链接,也得靠正则。学会正则,处理文本类工作能省超多时间,不管是做 Excel 数据清洗、写 Python 爬虫,还是前端表单验证,都用得上。

二、核心语法符号:用 “大白话 + 例子” 拆解,小白也能懂


正则符号看着乱,但常用的就这几个,一个个吃透,你会发现规律很简单。
  1. 基础匹配符号:. 和 \d 和 \w,最常用的 “通配符”

  • . 代表任意一个字符(除了换行),比如 “a.b” 能匹配 “a1b”“a@b”“a 好 b”,只要中间是一个字符就行。
  • \d 专门匹配数字(0-9),想验证手机号全是数字,用 “\d” 就对了。比如 “\d {11}” 表示 11 个数字,刚好匹配手机号长度。
  • \w 匹配字母、数字或下划线,比如用户名里的 “user123”“name_xy” 都能用 “\w+” 匹配。

有朋友会问:“\d 和 0-9 有区别吗?” 其实 “\d” 就是 “[0-9]” 的简写,写起来更方便,意思完全一样。
  1. 重复限定符: + ? {n},控制字符出现次数*
    这些符号用来规定前面的字符能出现多少次,超实用:

  • * 表示出现 0 次或多次,比如 “ab*c” 能匹配 “ac”(b 出现 0 次)、“abc”(b 出现 1 次)、“abbbbc”(b 出现 4 次)。
  • + 表示出现 1 次或多次,比*严格,必须至少出现 1 次。比如 “a+b” 能匹配 “ab”“aab”,但不能匹配 “b”(a 没出现)。
  • ? 表示出现 0 次或 1 次,比如 “https?://” 能匹配 “http://”(s 出现 0 次)和 “https://”(s 出现 1 次),刚好用来匹配网址开头。
  • {n} 表示固定出现 n 次,{n,m} 表示出现 n 到 m 次。比如手机号是 11 位数字,用 “\d {11}” 比 “\d\d\d\d\d\d\d\d\d\d\d” 简洁多了。

  1. 边界和分组:^ $ (),精准控制匹配范围

  • ^ 表示开头,$ 表示结尾,加了这两个符号,能避免 “部分匹配”。比如验证手机号 “13800138000”,用 “^\d {11}”才对,要是没加`^`,“13800138000abc” 也会被误判为匹配。
  • () 用来分组,把一部分正则当整体看,比如 “(ab)+” 表示 “ab” 这个组合出现 1 次或多次,能匹配 “ab”“abab”,但不能匹配 “aab”(不是 “ab” 组合)。

符号作用例子匹配结果
.任意字符a.ba1b、a@b
\d数字\d{3}123、456
+1 次以上a+a、aa、aaa
{2,3}2-3 次\w{2,3}ab、123、xy_
^$开头结尾^abc$只能匹配 abc,不能匹配 xabc

三、实战案例:3 个高频场景,边做边学才记得牢


光懂符号没用,动手做几个案例,你会发现正则突然就 “活” 了。
  1. 案例 1:验证手机号格式,再也不怕输错
    手机号规则:11 位数字,开头是 13、14、15、17、18、19 开头。
    正则表达式:^1[345789]\d{9}$
    拆解:

  • ^1 开头必须是 1
  • [345789] 第二位是 3/4/5/7/8/9 中的一个
  • \d{9} 后面跟 9 个数字(总共 11 位)
  • $ 结尾,确保没有多余字符

在 Python 里这样用:
import re phone = "13800138000" if re.match(r'^1[345789]\d{9}$', phone): print("手机号格式正确") else: print("格式错误")
兔子哥第一次写这个正则时,漏了^$,结果 “13800138000123” 也被当成正确的,加上边界符就好了。
  1. 案例 2:从文本中提取所有邮箱,效率翻倍
    邮箱规则:用户名 @域名。后缀,比如 “user@qq.com”“name_123@gmail.com”。
    正则表达式:\w+@\w+\.\w+
    拆解:

  • \w+ 匹配用户名(字母、数字、下划线)
  • @ 匹配 @符号(直接写,不用转义)
  • \w+ 匹配域名(比如 qq、gmail)
  • \. 匹配。符号(. 是特殊符号,必须用 \ 转义)
  • \w+ 匹配后缀(com、cn)

用 Python 提取试试:
text = "我的邮箱是a@163.com,工作邮箱是b_xy@gmail.com" emails = re.findall(r'\w+@\w+\.\w+', text) print(emails) # 输出:['a@163.com', 'b_xy@gmail.com']
这里要注意,.必须转义成\.,不然.会匹配任意字符,就会错把 “a@163com” 也当成邮箱了。
  1. 案例 3:清洗文本,去掉多余空格和符号
    爬网页时经常遇到文本里有多余空格、换行,用正则一键清洗:
    正则表达式:\s+ 匹配多个空格、换行、制表符
    替换成单个空格:
    text = "hello world\nwelcome to regex" clean_text = re.sub(r'\s+', ' ', text) print(clean_text) # 输出:hello world welcome to regex
    re.sub是替换函数,把匹配到的内容换成指定字符,超实用。

四、新手避坑指南:这 5 个错 90% 的人都会犯,提前避开


  1. 忘记转义特殊符号,比如. * +
    像.、*、+ 这些在正则里有特殊含义,想匹配它们本身必须加 \ 转义。比如匹配 “www.baidu.com” 里的.,要用 “www.baidu.com”,直接写 “www.baidu.com” 会匹配 “wwwXbaiduXcom”(. 匹配任意字符)。
  2. 贪婪匹配导致结果不对
    正则默认是贪婪匹配,会尽可能多匹配内容。比如用 “<.*>” 匹配 “

    标题

    ”,会匹配整个 “

    标题

    ”,而不是只匹配 “

    ”。想非贪婪匹配,在限定符后加?,比如 “<.*?>” 就能只匹配 “

    ”。


  3. ** 不用边界符 ^,不然 “12345” 会被 “\d {3}” 误判为匹配(其实只匹配了前 3 位),加上 “^\d {3}$” 就只会匹配刚好 3 位的数字。
  4. 过度依赖复杂正则,简单问题复杂化
    有些场景用简单正则就行,不用追求一步到位。比如验证邮箱不用写得太复杂,先用 “\w+@\w+.\w+” 入门,遇到特殊邮箱(比如带。的用户名 “a.b@qq.com”)再优化,新手别一开始就挑战复杂规则。
  5. 不测试就直接用,出了错难排查
    写好正则后一定要测试,推荐用 “regex101” 这个在线工具,输入正则和测试文本,能实时看到匹配结果,哪里错了一目了然。兔子哥现在写正则还天天用这个工具,测试好了再放到代码里,少踩很多坑。

结尾心得


正则表达式入门难在记符号,但常用的就那十几个,多练几个案例就能记住。新手别害怕符号多,从简单场景入手,先搞定手机号验证、邮箱提取这些高频需求,再慢慢学复杂规则。记住,正则是 “用会的” 不是 “背会的”,每天花 10 分钟写个小例子,一周就能熟练上手。遇到复杂的正则别慌,拆成小块逐个分析,或者用在线工具调试,你会发现正则其实是个超好用的工具,学会了能省超多时间!

标签: 正则表达式 摸不着头脑

发布评论 4条评论)

  • Refresh code

评论列表

2025-10-25 00:35:23

新手详解语法案例教学快速上手

2025-10-25 04:00:18

新手学正则,教程清晰上手快。

2025-10-26 04:55:06

零基础学正则,语法详解+实战,新手快速上手!

2025-10-27 04:55:15

新手学正则快速入门精解案例