1057 字
5 分钟
正则表达式基础:如何匹配你想要的字符串

本文只讲解正则表达式本身的语法规则,不涉及任何编程语言(如 Python、JavaScript)。你学到的规则可在任何支持正则的工具中使用(如文本编辑器、grep、在线测试器等)。


目录#

  1. 什么是正则表达式?
  2. 字面量匹配:精确查找固定文本
  3. 通配符:匹配任意字符
  4. 数字、字母、空白:预定义字符类
  5. 重复匹配:量词
  6. 自定义字符集:[]
  7. 分组与选择:() 和 |
  8. 位置锚定:行首、行尾、单词边界
  9. 常用模式示例
  10. 学习建议

1. 什么是正则表达式?#

正则表达式(Regular Expression)是一种描述字符串模式的规则语言

它的作用是:

  • 查找符合某种模式的文本
  • 验证文本是否符合格式(如邮箱、手机号)
  • 提取文本中的特定部分

你只需要写出一个“模式”,它就能告诉你:哪些字符串匹配这个模式。


2. 字面量匹配:精确查找固定文本#

最简单的正则就是直接写你要找的文本

正则匹配的字符串
hello"hello"
123"123"
Error:"Error:"

特点:区分大小写(除非工具设置忽略大小写)


3. 通配符:匹配任意字符#

  • .(点号):匹配任意一个字符(通常不包括换行符)
正则匹配示例
a.c"abc", "a2c", "a c"
...任意三个字符,如 "cat", "123"
IMPORTANT

注意:. 不匹配换行符(\n),具体行为取决于工具设置。


4. 数字、字母、空白:预定义字符类#

为方便使用,正则提供了一些预定义的字符集合

模式含义等价写法
\d任意数字[0-9]
\D任意非数字[^0-9]
\w单词字符(字母、数字、下划线)[a-zA-Z0-9_]
\W非单词字符[^a-zA-Z0-9_]
\s空白字符(空格、制表符、换行等)
\S非空白字符
正则匹配示例
\d\d"12", "99"
\w+"user123", "hello"
a\sb"a b", "a b"(中间是空格或制表符)

5. 重复匹配:量词#

量词用于指定前面的模式重复多少次

量词含义
*0 次或多次
+1 次或多次
?0 次或 1 次(可选)
{n}恰好 n 次
{n,}至少 n 次
{n,m}n 到 m 次
正则匹配示例
ab*"a", "ab", "abbb"
ab+"ab", "abbb"(不能只有 "a"
colou?r"color", "colour"
\d{4}"2025", "0000"
\d{2,4}"12", "123", "1234"
TIP

默认是“贪婪匹配”:尽可能多地匹配。如 a.*b"a1b2b" 中匹配整个字符串。


6. 自定义字符集:[]#

用方括号 [] 定义你自己的字符集合:

模式含义
[abc]匹配 a、b 或 c
[a-z]任意小写字母
[A-Z]任意大写字母
[0-9]任意数字(等价于 \d
[a-zA-Z0-9]字母或数字
[^0-9]非数字^ 在开头表示“取反”)
正则匹配示例
[aeiou]任意元音字母
gr[ae]y"gray", "grey"
[^,]任意非逗号字符

7. 分组与选择:() 和 |#

  • ():将多个字符分组,可对整个组使用量词
  • |:表示“或”关系
正则匹配示例
(ab)+"ab", "abab"
cat|dog"cat", "dog"
(Mr|Mrs|Ms)\. \w+"Mr. Smith", "Ms. Lee"
NOTE

分组在提取信息时非常有用(如提取日期中的年、月、日)。


8. 位置锚定:行首、行尾、单词边界#

这些符号不匹配字符,而是匹配位置

模式含义
^字符串开头
$字符串结尾
\b单词边界(单词与非单词字符之间)
\B非单词边界
正则匹配示例
^Hello字符串以 “Hello” 开头
world$字符串以 “world” 结尾
^\d+$整个字符串全是数字
\bcat\b匹配独立的单词 “cat”,不匹配 “catch” 中的 “cat”

9. 常用模式示例#

需求正则表达式
4 位年份\d{4}
电话号码(简单)\d{3}-\d{4}\d{3}\d{4}
邮箱(简化版)\w+@\w+\.\w+
IP 地址(简化)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
十六进制颜色#[0-9A-Fa-f]{6}
整数(可带正负)-?\d+
小数-?\d+\.\d+
WARNING

注意:真实场景中(如邮箱、IP),这些简化版可能不够严谨,但适合入门理解。


10. 学习建议#

  1. 使用在线工具练习
  2. 从简单开始:先写能工作的正则,再逐步优化
  3. 警惕过度复杂:正则不是万能的,复杂结构(如 HTML)应使用专用解析器
  4. 注意工具差异:不同软件对正则的支持略有不同(如是否支持 \b

掌握这些基础,你就能写出大多数日常所需的正则表达式! 🔍

正则表达式基础:如何匹配你想要的字符串
https://fuwari.vercel.app/posts/material/regex-tutorial/
作者
disparaître
发布于
2025-10-12
许可协议
CC BY-NC-SA 4.0