🏠 首页 攻略 正则表达式是什么?一文读懂搜索替换的万能语法

正则表达式是什么?一文读懂搜索替换的万能语法

正则表达式是处理文本的万能工具。本文用通俗易懂的方式讲解正则表达式的核心概念、5个真实工作场景、常见误区和在线调试工具推荐,零基础也能轻松上手。

正则表达式到底是什么?

想象一下:你有一整箱杂乱的乐高积木,要找所有红色、4x2规格的积木。你不想一个个翻,于是拿起一个「万能筛选器」——设定好规则,往箱子里一放,「唰」一下,所有符合规则的积木自动跳出来了。

正则表达式(Regular Expression,简称 Regex)就是这个「万能筛选器」,只不过它的对象不是积木,而是文字。

说得更直白点:正则表达式就是一套描述文本特征的密码。你用这套密码定义「我想要什么模式的文字」,然后计算机帮你在文章、日志、代码里把符合条件的文本全部找出来。

比如这样一个简单的表达式:

\d{11}

翻译成人话就是:「连续11个数字」。你把它往文档里一丢,所有11位数的手机号就全被揪出来了——手写肯定没这效率。

正则表达式在编程世界里几乎是通用的:JavaScript、Python、Java、Go、甚至 VS Code 和 Excel 都支持。学会它,等于给自己的工作流装了个外挂。想边学边练?用 navbox 的在线正则测试工具 可以实时看到匹配效果,比干看教程直观十倍。


五个最常用的实际场景

场景一:清除用户输入里的「脏数据」

用户提交表单,经常胡填:手机号里带空格、姓名前后有乱码、粘贴的身份证号带换行符……这些数据入库之前必须洗干净。

没有正则的话,你得写好几行 .replace() 来回调用。有正则,一行搞定:

# 去掉所有非数字字符(保留手机号/身份证中的纯数字)
cleaned = re.sub(r'\D', '', raw_input)

\D 的意思是「任何不是数字的字符」。不管是空格、横线、括号还是汉字,遇到非数字一律删除。配合 navbox 正则表达式构建器,像搭积木一样组合出你需要的清洗规则。

场景二:从日志里批量提取 IP 地址

运维同学最常碰到的需求。几千行访问日志,手工复制粘贴得干到下班。用正则:

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}

一秒之内,所有 IPv4 地址整整齐齐列出来。写成模式就是「1到3位数字 + 点 + 1到3位数字 + 点 + 1到3位数字 + 点 + 1到3位数字」。

配合 在线正则测试器 里的实时高亮功能,你在左边写规则,右边立刻看到匹配结果——不用等到写代码跑起来才知道对不对。

场景三:批量重命名文件

你在终端里想给一批图片改名——把 photo_2026.jpgphoto_2027.jpg 改成 img_2026.jpgimg_2027.jpg

# 用正则把 "photo_" 替换成 "img_"
rename 's/photo_/img_/' *.jpg

不只是改名,你还可以用正则把文件名中的日期格式统一、去掉多余的关键词、或是给文件加编号前缀。几十个文件,一条命令搞定。

场景四:验证用户提交的邮箱格式

前端和后端都需要的技能。虽然不能 100% 验证邮箱是否存在,但用正则可以把明显不合法的格式挡在门外:

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

拆开看就是:用户名(字母数字+特殊符号)+ @ + 域名(字母数字+短横线)+ 点 + 顶级域名(至少2个字母)。

把这条正则复制到你的校验代码里,用户再也别想填「abc@.com」这种明显错的地址了。

场景五:编辑器里批量替换格式

不写代码也能用上正则。VS Code、Sublime Text、甚至 Google Docs 的查找替换都支持正则。

比如你有一篇 500 行的 Markdown 笔记,里面所有的 第X章 要改成 ## 第X章(加上二级标题标记)。直接查找 第\d+章,替换成 ## 第\d+章——哦不对,替换里要用 $& 表示匹配到的内容,所以是 ## $&

按一下「全部替换」,500 处修改瞬间完成。手改的话,你得在这里花掉至少 20 分钟。


常见误区

误区一:「正则就是用来匹配的」

正则不只是匹配,它的三大功能是:

  1. 匹配 — 判断一段文本里有没有符合条件的部分
  2. 提取 — 把匹配到的部分拿出来(用括号分组)
  3. 替换 — 找到之后换掉它

很多人只用了第一项,等于买了台智能手机却只拿来打电话。

误区二:「一劳永逸,一条正则吃遍天」

正则讲究够用就好。很多新手喜欢把所有的规则塞进一条表达式里,结果写出来像天书一样谁也看不懂:

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(\.?[a-zA-Z]{2,})?$

能跑,但下一个人来维护的时候会骂人。更好的做法是拆成几行 + 注释,或者拆成多步验证。使用 正则构建工具 分步拼接再合成,既清晰又不容易出错。

误区三:「正则很慢」

写不好的正则确实慢(比如灾难性的回溯),但写好了极快。绝大部分日常场景,处理 1 万行文本也就是几毫秒的事。遇到大型文本觉得慢,先检查你的表达式里有没有 .* 这种「贪婪匹配」在反复回溯。


相关工具推荐

要学好和用好正则表达式,好工具比好记性更重要:

场景推荐工具
在线测试正则表达式Regex 在线测试器 — 输入表达式和文本,实时高亮匹配结果
分步构建复杂正则Regex 构建器 — 可视化组合,避开语法坑
需要转义 URL 参数URL 编码/解码工具 — 配合正则处理含特殊字符的文本
提取 JSON 中的数据JSON 格式化工具 — 用正则提取 JSON 之前,先格式化看结构

小结

正则表达式就跟骑自行车一样——刚学的时候觉得别扭、记不住、总想放弃。但一旦熟练了,你会发现它无处不在,而且每次使用都能帮你省下大把时间

别急着背所有语法。记住常用的:

  • \d 数字、\w 字母数字下划线、\s 空白
  • * 零或多个、+ 一或多个、? 零或一个
  • ^ 开头、$ 结尾、. 任意字符

掌握这些,你已经能解决 80% 的日常文本处理问题。剩下的 20%?遇到的时候打开 正则测试器 边测边学,比背语法手册效率高得多。