插件窝 干货文章 运维必备,正则表达式超全速查手册,赶快收藏!

运维必备,正则表达式超全速查手册,赶快收藏!

字符 匹配 捕获 exp 532    来源:    2025-04-13

作为IT工程师,掌握正则表达式(Regex)是必备技能。以下是我整理的实用速查手册,建议收藏备用:

一、基础元字符 1. 匹配字符 . 任意单个字符(除换行符) \d 数字 [0-9] \D 非数字 [^0-9] \w 单词字符 [a-zA-Z0-9_] \W 非单词字符 \s 空白字符 [\t\n\r\f\v] \S 非空白字符

  1. 量词

* 0次或多次 + 1次或多次 ? 0次或1次 {n} 恰好n次 {n,} 至少n次 {n,m} n到m次

二、高级用法 1. 位置锚定 ^ 行首 $ 行尾 \b 单词边界 \B 非单词边界

  1. 分组与捕获 (exp) 匹配exp并捕获 (?:exp) 匹配exp不捕获 (?exp) 命名捕获组

  2. 零宽断言 (?=exp) 正向肯定预查 (?!exp) 正向否定预查 (?<=exp) 反向肯定预查 (?<!exp) 反向否定预查

三、常用场景示例 1. 邮箱验证 \w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*

  1. URL匹配 https?://[^\s/$.?#].[^\s]*

  2. IP地址 ((25[0-5]|2[0-4]\d|[01]?\d\d?).){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)

  3. 日期格式(YYYY-MM-DD) \d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])

  4. 提取HTML标签 <([a-z]+)([^<]+)(?:>(.)<\/\1>|\s+\/>)

四、各语言差异 1. Python: re模块 re.search(r'regex', str)

  1. JavaScript: /regex/flags /test/i.test(str)

  2. Java: java.util.regex Pattern.compile("regex").matcher(str)

  3. Linux工具: grep -E, sed -r, awk

五、性能优化建议 1. 尽量具体化匹配范围 2. 避免嵌套量词 (..) 3. 使用非贪婪模式 (.*?) 4. 预编译重复使用的模式 5. 优先使用字符组 [abc] 而非分支 (a|b|c)

六、调试工具推荐 1. Regex101 (在线测试) 2. RegExr (可视化工具) 3. Debuggex (图形化分析)

收藏提示:不同语言和工具对正则的支持可能有细微差别,使用时请查阅对应文档。建议先在小规模数据上测试通过后再应用到生产环境。