计算机科学——正规式入门
快速入门正规式
·
✨ 【入门必看】正规式(正则表达式)超全解析!从零到精通,一篇搞定! ✨
🌟 一、什么是正规式?
正规式(Regular Expression,简称Regex)是一种用数学公式描述字符串规则的工具!
👉 举个栗子:
- 所有由
a组成的字符串(如a,aa,aaa…)→ 正规式:a* - 所有以
a开头、b结尾的字符串(如ab,aab,abb…)→ 正规式:a(a|b)*b
核心作用:在文本处理、编译器设计、数据验证中,快速匹配、搜索或过滤字符串! 🔍
🛠️ 二、正规式的3大核心操作符
正规式的灵魂是这3个操作符,一定要记牢!
| 操作符 | 含义 | 例子 | 匹配结果 |
|---|---|---|---|
| |
选择(或逻辑) | a|b |
a 或 b |
| 拼接 | 连接(顺序组合) | ab |
仅 ab |
* |
闭包(重复任意次) | a* |
空、a、aa、aaa… |
⚠️ 优先级:闭包(*) > 连接 > 选择(|),用()调整顺序!
👉 比如:(a|b)c 匹配 ac 或 bc,而 a|bc 匹配 a 或 bc!
📚 三、必会语法规则与经典案例
1️⃣ 基础规则
a:仅匹配字符aa*:匹配空串或任意个a(包括a,aa…)a+:至少1个a(等价于aa*)a?:0或1个a(等价于a|ε,ε表示空)
2️⃣ 组合操作实战
-
案例1:所有以
a开头、b结尾的字符串
🔧 正规式:a(a|b)*b
✅ 匹配:ab,aab,abb,aaabbb…
❌ 不匹配:ba,aba,a -
案例2:由
0和1组成且不以00结尾的字符串
🔧 正规式:(0|1)*(01|1|ε)
✅ 匹配:1,01,1101…
❌ 不匹配:00,100,1100
🆚 四、正规式 vs 编程中的正则表达式
| 特性 | 正规式(理论) | 编程中的正则表达式(如Python re) |
|---|---|---|
| 核心操作 | 仅 ` | , *`, 拼接 |
| 用途 | 描述字符串集合的数学定义 | 文本搜索、替换、复杂模式匹配 |
| 灵活性 | 简单严谨 | 功能强大,支持贪婪匹配、回溯等 |
👉 一句话总结:理论正规式是基础,编程中的正则表达式是它的“超级升级版”! 🚀
🔥 五、实战:手把手写正规式
需求:所有由 a 和 b 组成,且包含子串 ab 的字符串。
拆解步骤:
- 包含子串
ab→ 中间必须有ab; ab前后可以是任意字符 → 用(a|b)*表示前后部分;- 合并结果:
(a|b)*ab(a|b)*
✅ 测试用例:ab, aab, bab, aaabbb…
❌ 不匹配:a, b, ba, aba(不含连续ab)
🚀 六、正规式的应用场景
- 数据验证:邮箱、手机号格式校验。
📧 邮箱正规式:^\w+@\w+\.[a-z]+$ - 文本搜索:在代码中查找特定模式的字符串。
- 编译器设计:识别编程语言中的关键字、运算符。
- 日志分析:提取符合规则的日志信息(如错误日志)。
💡 七、学习建议
- 先理解理论:掌握闭包、选择、连接的组合逻辑。
- 多写多练:从简单需求入手,逐步增加复杂度。
- 工具辅助:用在线测试工具(如 Regex101)验证正规式。
- 查漏补缺:警惕常见错误,比如过度使用
*导致匹配空串!
🎉 总结
正规式是字符串处理的“瑞士军刀”🔪,3大操作符(|, *, 拼接)打天下!
记住:分解问题 → 组合操作符 → 测试验证,小白也能变大神! 🚀
下方留言区:你用过最复杂的正规式是什么?来挑战一下吧! 💬👇
声明
本文图片标题素材来自 Freepik,使用遵循其免费许可协议。
更多推荐


所有评论(0)