📌 目录:
1. 正则表达式的核心概念
- 匹配规则:使用特定字符模式来查找或替换文本。
- 贪婪匹配 & 懒惰匹配:默认贪婪匹配,可用
?
限制为懒惰匹配。 - 边界匹配:使用
^
、$
、\b
限制匹配的位置。 - 字符类:
[a-z]
(小写字母)、[0-9]
(数字)、\w
(单词字符)、\s
(空白符)。 - 分组与回溯引用:
()
用于分组,\1
引用匹配内容。 - 量词:
*
(0 次或多次)、+
(1 次或多次)、?
(0 次或 1 次)、{n,m}
(n 到 m 次)。
2. 常见正则表达式模式
功能 | 正则表达式 | 示例匹配 |
---|---|---|
匹配邮箱 | ^[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,}$ | user@example.com |
匹配手机号(中国) | ^1[3-9]\d{9}$ | 13812345678 |
匹配 IPv4 地址 | `^(25[0-5] | 2[0-4][0-9] |
匹配 URL | ^(https?://)?(www\.)?[\w-]+(\.[\w-]+)+([/?#].*)?$ | https://www.example.com |
匹配日期(YYYY-MM-DD) | `^(19 | 20)\d\d-(0[1-9] |
匹配 HTML 标签 | `^<([a-z]+)([^<]+)(?:>(.)</\1> | \s*/>)$` |
匹配 16 进制颜色 | `^#([a-fA-F0-9]{3} | [a-fA-F0-9]{6})$` |
3. 正则表达式的优化技巧
🔹 避免回溯过多
使用 懒惰匹配(.*?
而非 .*
)减少回溯,提高性能。
示例:
".*?" # 匹配最短的引号内内容
🔹 使用更具体的匹配
尽量减少 .*
,改为 字符类 限定匹配范围,提高匹配效率。
示例:
[a-z0-9_-]+@[a-z]+\.(com|net|org)
🔹 结合非捕获分组 (?:...)
避免不必要的分组开销,提高解析速度。
示例:
(?:http|https)://(?:www\.)?example\.com
4. 不同编程语言中的正则表达式
语言 | 正则表达式支持 | 主要用法 |
---|---|---|
Python | re 模块 | re.search(r"\d+", text) |
JavaScript | RegExp 对象 | /\d+/.test(text) |
Java | Pattern & Matcher | Pattern.compile("\\d+").matcher(text).find() |
PHP | preg_match() | preg_match("/\d+/", $text) |
C# | System.Text.RegularExpressions | Regex.IsMatch(text, @"\d+") |
5. 正则表达式的常见应用
✅ 文本验证(邮箱、手机号、身份证号)
✅ 日志分析(提取 IP、时间戳)
✅ 数据提取(抓取 HTML、解析 JSON)
✅ 代码格式化(匹配变量、函数名)
✅ 字符串替换(敏感词屏蔽、批量修改文本)
6. 参考资料
🔗 出站链接
🔗 站内链接
这样整理后,你觉得是否符合你的需求?😃
发表回复