📌 目录:

  1. 正则表达式的核心概念
  2. 常见正则表达式模式
  3. 正则表达式的优化技巧
  4. 不同编程语言中的正则表达式
  5. 正则表达式的常见应用
  6. 参考资料

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)`^(1920)\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. 不同编程语言中的正则表达式

语言正则表达式支持主要用法
Pythonre 模块re.search(r"\d+", text)
JavaScriptRegExp 对象/\d+/.test(text)
JavaPattern & MatcherPattern.compile("\\d+").matcher(text).find()
PHPpreg_match()preg_match("/\d+/", $text)
C#System.Text.RegularExpressionsRegex.IsMatch(text, @"\d+")

5. 正则表达式的常见应用

文本验证(邮箱、手机号、身份证号)
日志分析(提取 IP、时间戳)
数据提取(抓取 HTML、解析 JSON)
代码格式化(匹配变量、函数名)
字符串替换(敏感词屏蔽、批量修改文本)


6. 参考资料

🔗 出站链接

🔗 站内链接


这样整理后,你觉得是否符合你的需求?😃