【2024正则表达式语法大全】正则表达式(Regular Expression,简称 regex)是一种用于匹配、查找、替换文本的强大工具。随着编程语言和开发工具的不断更新,正则表达式的语法也在持续演变。本文将对2024年主流环境中常用的正则表达式语法进行总结,并以表格形式展示关键内容。
一、正则表达式基本概念
| 术语 | 含义 | ||
| 字面量 | 直接匹配特定字符,如 `a` 匹配字母 a | ||
| 元字符 | 有特殊含义的字符,如 `.`、``、`+` 等 | ||
| 转义字符 | 使用 `\` 来匹配元字符本身,如 `\.` 匹配点号 | ||
| 分组 | 使用 `()` 将多个字符组合为一个单元 | ||
| 选择符 | 使用 ` | ` 表示“或”的关系,如 `a | b` 匹配 a 或 b |
| 重复符 | 如 ``、`+`、`?` 表示匹配前面元素的次数 |
二、常用正则表达式符号及功能说明
| 符号 | 功能 | 示例 | ||
| `^` | 匹配字符串的开始 | `^hello` 匹配以 "hello" 开头的字符串 | ||
| `$` | 匹配字符串的结尾 | `world$` 匹配以 "world" 结尾的字符串 | ||
| `.` | 匹配任意单个字符(除换行符外) | `h.t` 匹配 "hat"、"hot" 等 | ||
| `` | 前面的字符出现 0 次或多次 | `go` 匹配 "g", "go", "goo" 等 | ||
| `+` | 前面的字符出现 1 次或多次 | `go+` 匹配 "go", "goo", "gooo" 等 | ||
| `?` | 前面的字符出现 0 次或 1 次 | `go?` 匹配 "g", "go" | ||
| `{n}` | 前面的字符出现 n 次 | `a{3}` 匹配 "aaa" | ||
| `{n,}` | 前面的字符至少出现 n 次 | `a{2,}` 匹配 "aa", "aaa", 等 | ||
| `{n,m}` | 前面的字符出现 n 到 m 次 | `a{2,4}` 匹配 "aa", "aaa", "aaaa" | ||
| `[]` | 匹配括号中的任意一个字符 | `[abc]` 匹配 a、b 或 c | ||
| `[^]` | 匹配不在括号中的任意一个字符 | `[^abc]` 匹配非 a、b、c 的字符 | ||
| `()` | 分组,用于捕获或限定范围 | `(ab)+` 匹配 "ab", "abab", 等 | ||
| ` | ` | “或”操作符 | `cat | dog` 匹配 "cat" 或 "dog" |
| `\d` | 匹配一个数字(等价于 [0-9]) | `\d{3}` 匹配三个数字 | ||
| `\D` | 匹配一个非数字字符 | `\D+` 匹配非数字组成的字符串 | ||
| `\w` | 匹配一个单词字符(字母、数字、下划线) | `\w+` 匹配单词 | ||
| `\W` | 匹配一个非单词字符 | `\W+` 匹配非单词字符 | ||
| `\s` | 匹配空白字符(空格、制表符、换行等) | `\s+` 匹配多个空白 | ||
| `\S` | 匹配非空白字符 | `\S+` 匹配非空白字符 | ||
| `\b` | 匹配单词边界 | `\bcat\b` 匹配独立的 "cat" | ||
| `\B` | 匹配非单词边界 | `\Bcat\B` 匹配在其他字符中间的 "cat" | ||
| `(?=...)` | 正向预查,匹配后面是某个模式 | `foo(?=bar)` 匹配 "foob" 中的 "foo" | ||
| `(?!...)` | 负向预查,匹配后面不是某个模式 | `foo(?!bar)` 匹配 "food" 中的 "foo" | ||
| `(?<=...)` | 正向后查,匹配前面是某个模式 | `(?<=foo)bar` 匹配 "foobar" 中的 "bar" | ||
| `(? | 负向后查,匹配前面不是某个模式 | `(? |
三、常见应用场景
| 应用场景 | 示例正则表达式 | |||
| 匹配邮箱地址 | `^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$` | |||
| 匹配手机号码(中国大陆) | `^1[3-9]\d{9}$` | |||
| 匹配IP地址 | `^(\d{1,3}\.){3}\d{1,3}$` | |||
| 匹配URL | `^(https?:\/\/)?([\da-z\.-]+\.[a-z\.]{2,6})([\w\.-])\/?$` | |||
| 匹配HTML标签 | `<([a-z]+)[^>]>(.?)<\/\1>` | |||
| 匹配日期格式(YYYY-MM-DD) | `^\d{4}-(0[1-9] | 1[0-2])-(0[1-9] | [12][0-9] | 3[01])$` |
四、注意事项
- 不同编程语言对正则表达式的支持略有差异,如 Python 的 `re` 模块与 JavaScript 的 `RegExp`。
- 复杂正则表达式可能影响性能,建议避免过度嵌套或使用贪婪匹配。
- 可使用在线正则测试工具(如 regex101.com)进行调试。
总结
正则表达式是处理文本数据的重要工具,掌握其语法能极大提升文本处理效率。2024年的正则表达式在原有基础上进一步优化了部分功能,例如对 Unicode 的支持更加完善。通过合理运用正则表达式,可以高效地实现字符串匹配、提取、替换等操作。


