正则表达式是用于文本匹配的工具,核心在于理解元字符与组合逻辑;基础模式如d+匹配数字,[a-za-z0-9._%+-]+匹配邮箱本地部分;常用符号包括.、^、$、、();实用场景涵盖手机号验证、中文匹配、url提取等;调试推荐regex101.com,注意贪婪性、转义及语言差异。

正则表达式(Regex)是一种强大的文本匹配工具,用于查找、提取或替换符合特定规则的字符串。掌握它不需要死记所有符号,关键是理解常用元字符和组合逻辑,并结合实际场景反复练习。
基础语法:从最简模式开始
先用最常用的字符类和量词构建基础模式。比如匹配连续数字:d+,其中 d 表示任意一位数字,+ 表示“一个或多个”。又如匹配邮箱本地部分(@之前):[a-zA-Z0-9._%+-]+,方括号定义字符集,+ 表示重复至少一次。
-
.匹配任意单个字符(换行符除外) -
^和$分别表示字符串开头和结尾,用于精确匹配整行 -
匹配单词边界,比如cat可匹配 “cat”,但不匹配 “scatter” - 用
()括起来的部分会形成捕获组,方便后续提取或引用
常见实用场景与写法
不同需求对应不同写法。例如验证手机号(以大陆11位数字为例):^1[3-9]d{9}$。这里 ^1 确保以1开头,[3-9] 限定第二位是3–9,d{9} 表示后面紧跟9个数字,$ 保证到此结束,避免多出字符。
一款AI开发辅助工具,主要用于从 AI 编程会话日志(Clawdbot、Claude Code、Codex)中提取对话记录。该功能用于在用户要求导出提示词历史、会话日志或 `.jsonl` 格式的会话文件时使用,适合需要提升相关任务效率的用户。
- 匹配中文:
[u4e00-u9fa5]+(Unicode范围覆盖常用汉字) - 提取URL中的域名:
https?://([^/]+),括号内即为域名部分 - 替换多余空格:
s+替换为单个空格,可清理文本格式 - 忽略大小写匹配:在多数语言中启用
i标志,如/hello/i
调试与验证技巧
写完正则别急着用,先在在线工具(如 regex101.com)里测试。粘贴样本文本,实时看哪些部分被匹配、分组是否正确。注意贪婪与非贪婪的区别:默认*、+是贪婪匹配,会尽可能多匹配;加?变成非贪婪,如href="(.*?)" 能准确提取引号内的链接,避免跨标签误匹配。
- 遇到不匹配,先检查是否忘了转义特殊字符(如
.、?、*) - 用
test()(JavaScript)或re.search()(Python)确认是否存在匹配 - 用
match()或findall()提取结果,注意返回结构差异 - 复杂逻辑可拆成多个简单正则,比硬写一个超长表达式更易维护
语言差异与注意事项
不同编程语言对正则的支持略有不同。Python 的 re 模块默认不支持 Unicode 属性(如p{Han}),而 JavaScript 的 u 标志才能正确处理中文。另外,有些语言(如 Java)需双反斜杠\d,因为字符串本身会先解析一次转义。
- Python 中推荐使用原始字符串:
r"d{3}-d{4}"避免反斜杠冲突 - JavaScript 中全局匹配要加
g标志,否则只找第一个 - 性能敏感场景慎用嵌套量词(如
(a+)+),可能引发回溯灾难 - 若只是做简单子串查找,直接用
str.contains()或in更快更安全










