【常用正则表达式】在日常的编程和文本处理中,正则表达式(Regular Expression)是一种非常强大的工具,用于匹配、查找、替换和提取字符串中的特定模式。无论是进行数据验证、日志分析还是文本处理,掌握一些常用的正则表达式可以大大提高效率。
以下是一些在实际开发中经常用到的正则表达式,按功能分类整理,并附上简要说明及示例。
一、基础匹配
正则表达式 | 说明 | 示例 |
`^a` | 匹配以字母 a 开头的字符串 | "apple" 匹配,"banana" 不匹配 |
`a$` | 匹配以字母 a 结尾的字符串 | "cat" 匹配,"dog" 不匹配 |
`.` | 匹配任意单个字符(除换行符) | "a1"、"b2" 都匹配 |
`\d` | 匹配数字(0-9) | "123" 匹配,"abc" 不匹配 |
`\D` | 匹配非数字字符 | "abc" 匹配,"123" 不匹配 |
二、重复与范围
正则表达式 | 说明 | 示例 |
`a+` | 匹配一个或多个 a | "aa", "aaa" 匹配,"a" 匹配,"b" 不匹配 |
`a` | 匹配零个或多个 a | ""、"a"、"aa" 都匹配 |
`a?` | 匹配零个或一个 a | "a" 或 "" 匹配,"aa" 不匹配 |
`[abc]` | 匹配 a、b 或 c 中的一个 | "a"、"b"、"c" 匹配,"d" 不匹配 |
`[a-z]` | 匹配小写字母 | "a" 到 "z" 的字符都匹配 |
`[A-Z]` | 匹配大写字母 | "A" 到 "Z" 的字符都匹配 |
`[0-9]` | 匹配数字 | "0" 到 "9" 的字符都匹配 |
三、边界与分组
正则表达式 | 说明 | 示例 |
`\b` | 匹配单词边界 | "word" 中的 "w" 和 "o" 之间有边界 |
`\B` | 匹配非单词边界 | 在单词内部匹配 |
`(abc)` | 分组匹配,将 abc 视为一个整体 | "abc123" 可匹配到 "abc" |
`(?=...)` | 正向预查,匹配后面有某内容的字符串 | "test123" 匹配,但不包含 "123" |
`(?!...)` | 负向预查,匹配后面没有某内容的字符串 | "test" 匹配,但 "test123" 不匹配 |
四、常见应用场景
场景 | 正则表达式 | 用途 |
匹配邮箱地址 | `^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$` | 验证用户输入的邮箱格式 |
匹配手机号码(中国大陆) | `^1[3-9]\d{9}$` | 检查手机号是否符合规范 |
匹配IP地址 | `^(\d{1,3}\.){3}\d{1,3}$` | 验证IP地址格式 |
匹配URL | `^(https?:\/\/)?([\da-z\.-]+\.[a-z\.]{2,6})([\/\w \.-])\/?$` | 提取网页链接 |
匹配日期(YYYY-MM-DD) | `^\d{4}-\d{2}-\d{2}$` | 验证日期格式 |
五、注意事项
- 正则表达式在不同语言中可能略有差异,如 Python、JavaScript、Java 等。
- 复杂的正则表达式容易造成性能问题,应尽量避免过度嵌套或使用过于复杂的模式。
- 使用时建议配合测试工具(如 regex101.com)进行调试,确保匹配结果符合预期。
通过合理运用这些正则表达式,可以在实际开发中提高代码的灵活性和健壮性。当然,正则表达式的学习是一个长期积累的过程,建议结合具体项目不断实践和优化。