正则表达式(Regular Expression)简介
正则表达式(简称 Regex 或 RegExp)是一种用单一字符串来描述、匹配一系列符合某个语法规则的字符串的强大工具。它本质上是一种模式匹配语言,广泛用于文本处理任务。
为什么需要正则表达式?
在处理文本时,我们经常需要:
- 搜索特定模式(如查找所有手机号)
- 验证输入是否合法(如检查邮箱格式是否正确)
- 提取信息(如从日志中提取 IP 地址)
- 替换文本(如将所有日期格式统一)
普通字符串查找(如 str.find("abc"))只能匹配固定内容,而正则表达式可以灵活描述复杂模式,大大提高效率。
简单比喻
可以将正则表达式想象成一种“通配符搜索”:
- 普通搜索:找到底文的“cat”
- 正则搜索:找出所有“c开头的三个字母动物词”(如 cat、cow、cap 等)
基本组成
正则表达式由两类字符组成:
- 普通字符:直接匹配自身
示例:abc匹配字符串中的 “abc” - 元字符(特殊符号,具有特定含义)
示例:
.:匹配任意单个字符(除换行外)*:匹配前面的字符 0 次或多次\d:匹配一个数字
最简单示例
| 正则表达式 | 含义 | 能匹配的例子 | 不能匹配的例子 |
|---|---|---|---|
cat | 精确匹配 “cat” | “cat”, “concat” 中的 cat | “Cat”, “dog” |
c.t | c + 任意字符 + t | “cat”, “cot”, “c3t” | “ct”, “caat” |
\d{3} | 连续三个数字 | “123”, “456” | “12”, “abc” |
^hello$ | 以 hello 开头并结尾(整行精确匹配) | “hello” | “hello world” |
常见应用场景
- 表单验证:邮箱、手机号、身份证号
- 文本编辑器查找替换(如 VS Code、Notepad++)
- 编程语言:JavaScript、Python、Java、PHP 等都原生支持
- 命令行工具:grep、sed、awk
- 日志分析、爬虫数据清洗
小结
正则表达式虽然看起来符号多、有点“神秘”,但掌握后会极大提升你的文本处理能力。它不是一门编程语言,而是一种跨语言的模式描述工具。
学会正则 = 学会用一种“迷你语言”高效操作文本。
如果你想继续深入学习(如常用元字符详解、实际案例等),可以告诉我,我们一步步来!