引言

在日常学习和工作中,大家是不是有遇到以下痛点:

  • 你是否曾在海量文本中抓狂地寻找关键信息?
  • 是否被用户填写的乱七八糟的格式逼到崩溃?

正则表达式——这个程序猿口中的文本魔法,其实就像给你的Ctrl+F装上了智能导航系统!

本文计划使用「零基础也能懂」的方式带你入门,力争让读者在短时间内学会正则表达式:

🔹 4步讲透核心逻辑:从符号三件套到避坑口诀,把天书变人话

🔹 3个即学即用案例:匹配身份证、抓链接、验邮箱,学完立刻上手

🔹 隐藏彩蛋式学习法:用「门神」「复读机」等脑洞比喻,让抽象符号过目不忘

无论大家是要批量修改文本数据,还是想从代码中精准提取信息,这套文本模式匹配的终极秘籍都能让大家效率翻倍。现在,让我们用15分钟,把令人头大的正则表达式变成大家的得力助手!


🧐 正则表达式是啥?为啥要学它?

一句话定义

正则表达式就像一套 “文本搜索的武功秘籍”,用简单的符号组合描述复杂的文本规则,帮你快速找到、验证或修改字符串中的内容。

它能干啥?

  • 搜文本:比如在1000行日志里秒速定位“报错信息”。
  • 验格式:检查用户输入的手机号、邮箱是不是瞎填的~
  • 改内容:一键把“2023/10/01”批量改成“2023-10-01”。

生活化场景举例:

  • 程序员:从代码里扒出所有电话号码。
  • 运营人:把Excel里“价格¥99元”统一删掉“元”字。
  • 学生党:在论文里批量修正拼写错误。

🔍 新手必知的“符号三件套”

普通字符——直球选手

直接匹配字面内容,比如 cat 就只认“cat”这三个字母,像极了考试时的填空题答案!

元字符——魔法符号 🪄

符号

外号

作用

举个栗子🌰

^

门神左

死死守住字符串开头

^早上好 → 只认“早上好”开头的句子

$

门神右

死死守住字符串结尾

下班啦$ → 只认“下班啦”结尾的句子

.

百变怪

匹配任意一个字符(除了换行)

h.llo → 能抓“hello”“hallo”甚至“h3llo”

*

复读机

前一个字符可以出现0次或多次

a* → 能匹配空字符串、“a”、“aaaa”(老板:这个需求改100遍!)

+

至少一次君

前一个字符至少出现1次

a+ → 必须要有“a”,但“aaaa”也行

?

可有可无

前一个字符最多出现1次

https? → 能匹配“http”和“https”(多一个s?随你便~)

字符组——多选一开关 🔘

  • [aeiou] → 匹配任意一个元音字母(比如“apple”里的a和e)
  • [0-9] → 匹配数字(等价于\d,但更直观)
  • [^abc]排除法:只要不是a、b、c的字符都行(注意这个^在[]里是“非”的意思!)

转义符——解除封印的关键 ⚠️

遇到元字符想当普通符号用?加个反斜杠\解除魔法!

  • 想匹配真实的. → 写成 \.
  • 想匹配真实的* → 写成 \*
  • 新手必坑指南:在代码中要写成\\(比如Java/Python),因为\本身也要转义!

🚀 3分钟上手小案例

匹配纯数字(比如验证身份证号)

^\d+$  
  • 翻译:从开头到结尾必须全是数字,至少1个
  • 能匹配:"123", "456789"
  • 不能匹配:"12a3", " 123"(有空格)

匹配基础邮箱(够小白用)

\w+@\w+\.[a-z]{2,3}  
  • 拆解
    • \w+:用户名(字母/数字/下划线,至少1个)
    • @:必须有@符号
    • \w+:域名(比如“gmail”)
    • \.:必须有个点(注意转义!)
    • [a-z]{2,3}:后缀2-3位字母(如com、cn)
  • 能匹配user_123@gmail.com
  • 局限:暂不支持.co.jp等长后缀,但够新手用啦!

抓取网页链接(初阶版)

https?://[\w.-]+  
  • 拆解
    • http:固定开头
    • s?:可能有s(即支持http和https)
    • ://:固定符号
    • [\w.-]+:域名(允许字母、数字、点、减号)
  • 能匹配http://example.comhttps://news.baidu.com

🛠️ 避坑工具包

在线练习场:

  • RegExr:边输规则边看匹配结果,自带语法高亮(适合视觉党👀
  • RegexLearn:游戏化学习网站,像玩消消乐一样学正则!

口诀速记:

^开头$结尾,  
点星加问莫乱给,  
方括号里选范围,  
转义斜杠要双写!  

灵魂总结:

正则表达式就像搭积木——先记熟^$.*+?这几个核心符号,再组合起来玩出花样!遇到问题别慌,拆成小模式逐个击破~


下期预告

《第2篇:高级操作!用“或”、“分组”实现复杂匹配》——教你用|()像写逻辑代码一样玩正则! 🎮