作为IT工程师,掌握正则表达式(Regex)是必备技能。以下是我整理的实用速查手册,建议收藏备用:
一、基础元字符 1. 匹配字符 . 任意单个字符(除换行符) \d 数字 [0-9] \D 非数字 [^0-9] \w 单词字符 [a-zA-Z0-9_] \W 非单词字符 \s 空白字符 [\t\n\r\f\v] \S 非空白字符
* 0次或多次 + 1次或多次 ? 0次或1次 {n} 恰好n次 {n,} 至少n次 {n,m} n到m次
二、高级用法 1. 位置锚定 ^ 行首 $ 行尾 \b 单词边界 \B 非单词边界
分组与捕获
(exp) 匹配exp并捕获
(?:exp) 匹配exp不捕获
(?
零宽断言 (?=exp) 正向肯定预查 (?!exp) 正向否定预查 (?<=exp) 反向肯定预查 (?<!exp) 反向否定预查
三、常用场景示例 1. 邮箱验证 \w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*
URL匹配 https?://[^\s/$.?#].[^\s]*
IP地址 ((25[0-5]|2[0-4]\d|[01]?\d\d?).){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)
日期格式(YYYY-MM-DD) \d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])
提取HTML标签 <([a-z]+)([^<]+)(?:>(.)<\/\1>|\s+\/>)
四、各语言差异 1. Python: re模块 re.search(r'regex', str)
JavaScript: /regex/flags /test/i.test(str)
Java: java.util.regex Pattern.compile("regex").matcher(str)
Linux工具: grep -E, sed -r, awk
五、性能优化建议 1. 尽量具体化匹配范围 2. 避免嵌套量词 (..) 3. 使用非贪婪模式 (.*?) 4. 预编译重复使用的模式 5. 优先使用字符组 [abc] 而非分支 (a|b|c)
六、调试工具推荐 1. Regex101 (在线测试) 2. RegExr (可视化工具) 3. Debuggex (图形化分析)
收藏提示:不同语言和工具对正则的支持可能有细微差别,使用时请查阅对应文档。建议先在小规模数据上测试通过后再应用到生产环境。