【常用正则表达式】在日常的编程和文本处理中,正则表达式(Regular Expression,简称 regex)是一种非常强大的工具,用于匹配、查找、替换和提取字符串中的特定模式。不同的编程语言和工具对正则表达式的语法支持略有差异,但核心概念基本一致。以下是一些常用正则表达式的总结,帮助开发者快速掌握常见用法。
一、基础字符匹配
正则表达式 | 说明 | 示例 |
`a` | 匹配字符 'a' | 匹配 "apple" 中的 'a' |
`\d` | 匹配任意数字(0-9) | 匹配 "abc123" 中的 '1', '2', '3' |
`\D` | 匹配非数字字符 | 匹配 "abc123" 中的 'a', 'b', 'c' |
`\w` | 匹配字母、数字或下划线 | 匹配 "user_name" 中的每个字符 |
`\W` | 匹配非字母、数字或下划线 | 匹配 "user name" 中的空格 |
`\s` | 匹配空白字符(空格、换行、制表符等) | 匹配 "hello world" 中的空格 |
`\S` | 匹配非空白字符 | 匹配 "hello world" 中的 'h', 'e', 'l' 等 |
二、量词与重复匹配
正则表达式 | 说明 | 示例 |
`a+` | 匹配一个或多个 'a' | 匹配 "aaa" 或 "aa" |
`a` | 匹配零个或多个 'a' | 匹配 ""(空)、"a"、"aa" |
`a?` | 匹配零个或一个 'a' | 匹配 "a" 或 "" |
`a{3}` | 匹配恰好三个 'a' | 匹配 "aaa" |
`a{2,4}` | 匹配 2 到 4 个 'a' | 匹配 "aa", "aaa", "aaaa" |
`a{2,}` | 匹配至少两个 'a' | 匹配 "aa", "aaa", "aaaa" |
三、边界与分组
正则表达式 | 说明 | 示例 | |
`^a` | 匹配以 'a' 开头的字符串 | 匹配 "apple",不匹配 "banana" | |
`a$` | 匹配以 'a' 结尾的字符串 | 匹配 "banana",不匹配 "apple" | |
`(abc)` | 分组,匹配括号内的内容 | 匹配 "abc123" 中的 "abc" | |
`a | b` | 匹配 'a' 或 'b' | 匹配 "apple" 或 "banana" |
`[abc]` | 匹配其中任意一个字符 | 匹配 "a", "b", "c" | |
`[^abc]` | 匹配除 'a', 'b', 'c' 外的字符 | 匹配 "d", "e", "f" |
四、常见应用场景示例
应用场景 | 正则表达式 | 说明 |
匹配邮箱地址 | `\b[\w.-]+@[\w.-]+\.\w+\b` | 验证用户输入的电子邮件格式 |
匹配手机号码(中国) | `1[3-9]\d{9}` | 匹配 11 位手机号码 |
匹配 URL | `https?:\/\/[\w.-]+\.[\w.-]+` | 匹配 http 或 https 协议的网址 |
匹配日期(YYYY-MM-DD) | `\d{4}-\d{2}-\d{2}` | 匹配类似 "2025-04-05" 的日期格式 |
提取 HTML 标签 | `<(\w+)\b[^>]>(.?)<\/\1>` | 提取 HTML 标签及其内容 |
五、注意事项
1. 转义字符:某些字符如 `.`、``、`+` 等在正则中有特殊含义,若要匹配字面意义,需使用反斜杠 `\` 转义。
2. 贪婪与懒惰:`` 和 `+` 是“贪婪”的,会尽可能多地匹配;添加 `?` 可以使其变为“懒惰”。
3. 平台差异:不同语言(如 Python、JavaScript、Java)对正则的支持可能略有不同,建议查阅具体文档。
通过掌握这些常用的正则表达式,可以大大提高文本处理效率,适用于数据清洗、表单验证、日志分析等多个领域。希望这份整理能为你的开发工作提供参考与帮助。