01-元字符:如何巧妙记忆正则表达式的基本元件?

你好,我是悦创。

今天正式开启我们的正则表达式课程。第一讲,我们要从"正则的基石"------元字符讲起。别小看它,所有复杂的正则技巧,最终都是从这些小符号组合起来的。


1. 元字符是什么?

在开篇词里我提到过,正则表达式常见的三大用途:

  • 检查数据是否符合规则(比如邮箱、手机号校验);
  • 查找符合要求的文本;
  • 对文本进行分割、替换。

你可能会想:正则是怎么做到这些操作的呢?

先别急,我们从熟悉的场景入手。

在 Word、Excel 里,你肯定用过"查找/替换"功能。输入一个词,它就能帮你找到,甚至一键替换掉。

这和正则的思想很像。但不同的是:正则不只是找具体的文字,还能找"符合某种规律的内容"。

举个例子:

  • 如果你想在文档里找所有数字,不会正则时,可能要一个个输入 0、1、2...9 去搜,很麻烦。
  • 用正则,只要一个 \d,就能搞定!\d 就代表 0-9 的任意一个数字。

更神奇的是,加上量词后还能控制次数:

比如 \d{11} 表示连续的 11 个数字,也就是一个手机号。

这就是正则的魅力所在:靠一些特殊符号(元字符),就能描述复杂的文本规则。

👉 所以,元字符就是正则的"字母表",是所有规则的基本单位。


2. 元字符怎么分类记忆?

元字符种类很多,背死记硬背真的痛苦。

我的建议是:分类记忆。这样更有体系感,学习效率也更高。

常见分类大致有这几种:

  1. 特殊单字符
  2. 空白符
  3. 量词(次数相关)
  4. 范围(多选一 / 限定)
  5. 断言(边界判断,后面章节会讲)

下面我们逐个拆解。


2.1 特殊单字符

几个常见的元字符:

  • . :任意单个字符(除了换行)
  • \d :任意数字 0-9
  • \w :字母、数字或下划线
  • \s :任意空白符(空格、换行、Tab)
  • 反义形式:\D(非数字)、\W(非字母数字下划线)、\S(非空白)

测试一下:
\d 只能匹配数字 → 在线测试链接
\w 匹配字母数字下划线 → 在线测试链接


2.2 空白符

处理文本时经常会遇到:空格、换行、制表符。

在正则里常用写法有:

  • \n → 换行符
  • \t → Tab 制表符
  • \r → 回车(Windows 的换行是 \r\n,Linux/Mac 只有 \n)
  • \s → 匹配任意单个空白符(最常用!)

2.3 量词(次数限定)

只匹配一个字符太弱了。更多时候,我们需要控制"重复次数"。

量词就是干这个的:

  • * :0 次或多次
  • + :1 次或多次
  • ? :0 次或 1 次
  • {m,n} :m 到 n 次

举个例子:

  • colou?r → 能同时匹配 color 和 colour
  • \d+ → 至少一个数字
  • \d* → 可能没有,也可能有多个数字

在线测试:https://regex101.com/r/PnzZ4k/8


2.4 范围(集合匹配)

当我们需要"在某一类字符里任选"时,就用范围。

  • [] :中括号内多选一
    • [aeiou] → 任意元音字母
    • [a-z] → 任意小写字母
    • [^0-9] → 不是数字
  • | :或运算
    • ab|bc → 匹配 ab 或 bc
  • 组合:
    • (https?|ftp):// → 匹配 http://、https:// 或 ftp://

在线测试:https://regex101.com/r/PnzZ4k/5


3. 小结

今天我们认识了正则的"字母表"------元字符。内容包括:

  • 特殊单字符(\d、\w、. 等)
  • 空白符(\s、\n、\t 等)
  • 量词(*、+、?、{m,n})
  • 范围([]、|、[^ ] 等)

这些是正则的入门必修课,掌握它们之后,你就能写出很多实用的正则了。

学习建议:

  1. 多练习!光看不敲,记不住。
  2. 把学到的知识讲给别人,这是最好的自测方法。

最后附一张总结思维导图,方便复习:


4. 思考题

来做一个练习题吧👇

📱 手机号规则:

  1. 第 1 位固定为 1;
  2. 第 2 位为 3-9;
  3. 后面 9 位为 0-9 任意数字;

请你用今天学到的元字符写一个正则,准确匹配手机号。

把答案写在评论区,一起讨论交流!


今天的课程就到这里啦,希望你能真正掌握元字符,并开始体会到正则表达式的威力。🚀

相关推荐
只愿云淡风清3 小时前
正则表达式学习笔记-01 正则表达式的来源
笔记·学习·正则表达式
半亩码田14 小时前
C#转Python第4.8篇:正则表达式:Python re 模块 vs C# System.Text.RegularExpressions
python·正则表达式·c#
残诗1 天前
正则表达式分类掌握与应用
正则表达式
databook7 天前
面向数据工程师的正则表达式:从日志清洗到字段提取
python·正则表达式·数据分析
小白快快跑哦8 天前
python-字符串全解(六):正则表达式-位置断言
python·正则表达式·位置断言
哭泣方源炼蛊11 天前
正则表达式c++内容汇集
数据库·c++·mysql·正则表达式
划破黑暗的第一缕曙光11 天前
正则表达式使用规则和用例
正则表达式·语法·图表·语法规则·练习用例
小白快快跑哦12 天前
python-字符串全解(六):正则表达式-量词
python·正则表达式·字符串
福兮说12 天前
JS 正则的六个坑:带 g 的 test() 一真一假、空匹配死循环、replace 里的 $
开发语言·前端·javascript·正则表达式
Rebecca_aLi12 天前
码匠教育:零基础学 Python,标识符到循环全套基础语法解析
开发语言·python·正则表达式