第 1 章:正则表达式入门
2025/9/1大约 3 分钟
第 1 章:正则表达式入门
学习目标
- 理解正则表达式的基本概念和用途
- 掌握正则表达式的基本语法结构
- 学会使用在线工具测试正则表达式
- 了解不同编程语言中的正则表达式支持
1.1 什么是正则表达式
正则表达式(Regular Expression,简称regex或regexp)是一种用来匹配字符串中字符组合的模式。它是一种强大的文本处理工具,可以用来:
- 验证输入格式(如邮箱、电话号码)
- 搜索和替换文本
- 提取特定信息
- 数据清洗和格式转换
1.2 正则表达式的基本结构
正则表达式由以下部分组成:
- 字面字符:直接匹配的字符,如
hello
匹配文本中的 "hello" - 元字符:具有特殊含义的字符,如
.
*
+
?
等 - 字符类:用方括号括起来的字符集合,如
[abc]
- 量词:指定匹配次数,如
{3}
{2,5}
- 锚点:指定位置,如
^
开头,$
结尾
1.3 正则表达式语法示例
基础示例
cat # 匹配 "cat"
c.t # 匹配 "cat", "cot", "cut" 等
c[ao]t # 匹配 "cat" 或 "cot"
c[a-z]t # 匹配 c + 任意小写字母 + t
常用元字符
.
- 匹配任意字符(除换行符)*
- 匹配前面的字符0次或多次+
- 匹配前面的字符1次或多次?
- 匹配前面的字符0次或1次^
- 匹配行的开始$
- 匹配行的结束
1.4 在线测试工具
推荐的正则表达式测试网站:
- RegexPal (https://regexpal.com/)
- Regex101 (https://regex101.com/)
- RegExr (https://regexr.com/)
- RegexTester (https://www.regextester.com/)
这些工具的特点:
- 实时测试和匹配结果显示
- 语法高亮和错误提示
- 详细的匹配解释
- 支持不同编程语言的语法
1.5 编程语言支持
JavaScript
const regex = /hello/;
const result = "hello world".match(regex);
Python
import re
pattern = r"hello"
result = re.search(pattern, "hello world")
Java
import java.util.regex.*;
Pattern pattern = Pattern.compile("hello");
Matcher matcher = pattern.matcher("hello world");
PHP
$pattern = "/hello/";
preg_match($pattern, "hello world", $matches);
1.6 为什么需要正则表达式
传统字符串操作的局限性
// 传统方式验证邮箱 - 复杂且不完整
function validateEmailOld(email) {
return email.includes("@") &&
email.includes(".") &&
email.indexOf("@") > 0 &&
email.lastIndexOf(".") > email.indexOf("@");
}
使用正则表达式的优势
// 正则表达式方式 - 简洁且准确
function validateEmailNew(email) {
const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return regex.test(email);
}
1.7 正则表达式的应用场景
数据验证
- 邮箱地址验证
- 电话号码格式检查
- 密码强度验证
文本搜索和替换
- 代码重构
- 批量文本处理
- 日志分析
数据提取
- 网页数据抓取
- 日志信息提取
- 配置文件解析
数据清洗
- 删除多余空白字符
- 统一数据格式
- 去除特殊字符
1.8 学习建议
- 循序渐进:从简单的字面匹配开始,逐步学习复杂语法
- 多练习:使用在线工具频繁练习各种模式
- 实际应用:结合具体项目需求来学习
- 参考文档:熟悉目标编程语言的正则表达式文档
小结
正则表达式是文本处理的强大工具,虽然语法看起来复杂,但通过系统学习和练习,可以大大提高文本处理的效率。理解其基本概念和结构是后续深入学习的基础。
练习题
使用在线工具测试以下正则表达式:
cat
匹配文本 "The cat is sleeping"c.t
匹配文本 "cat, cot, cut, c@t"^hello
匹配文本 "hello world"
尝试编写一个简单的正则表达式来匹配3位数字。