Python正则表达式入门(匹配手机号邮箱身份证,新手实用)

📅 发布时间:2026/7/13 14:31:23 👁️ 浏览次数:
Python正则表达式入门(匹配手机号邮箱身份证,新手实用)
正则表达式是处理字符串的“神器”用于匹配、查找、替换符合规则的字符串比如提取文本中的手机号、验证邮箱格式、清洗数据等。很多新手觉得正则表达式语法晦涩难懂其实掌握常用的匹配规则再结合实战案例就能快速上手。今天分享Python正则表达式的基础用法聚焦“手机号、邮箱、身份证”这3个高频场景搭配可直接运行的代码新手复制就能用轻松解决字符串处理问题一、核心基础正则表达式常用符号新手必记先记几个最常用的符号覆盖80%的场景符号含义示例\d匹配数字0-9\d{11} → 匹配11位数字\w匹配字母/数字/下划线\w → 匹配至少1个字母/数字/下划线[]匹配括号内的任意字符[0-9a-zA-Z] → 匹配数字或字母^匹配字符串开头^13 → 匹配以13开头的字符串$匹配字符串结尾com$ → 匹配以com结尾的字符串{n}匹配n次\d{6} → 匹配6位数字{n,m}匹配n到m次\d{6,18} → 匹配6-18位数字匹配至少1次\d → 匹配至少1位数字*匹配0次或多次\d* → 匹配0位或多位数字或二、Python正则模块re核心Python通过re模块操作正则表达式新手重点掌握4个函数re.match()从字符串开头匹配用得少re.search()查找字符串中第一个匹配的内容re.findall()查找所有匹配的内容最常用re.sub()替换匹配的内容。三、实战1匹配手机号11位以13/14/15/17/18/19开头import re # 手机号正则规则 phone_pattern r^1[345789]\d{9}$ # 测试数据 phones [13800138000, 12345678901, 1380013800, 138001380001] for phone in phones: # re.match从开头匹配返回匹配对象成功/None失败 result re.match(phone_pattern, phone) if result: print(f{phone} 是有效手机号) else: print(f{phone} 是无效手机号) # 输出 # 13800138000 是有效手机号 # 12345678901 是无效手机号开头不是13/14等 # 1380013800 是无效手机号不足11位 # 138001380001 是无效手机号超过11位四、实战2提取文本中的所有邮箱import re # 邮箱正则规则 email_pattern r[a-zA-Z0-9_.-][a-zA-Z0-9-]\.[a-zA-Z0-9-.] # 测试文本 text 联系我们supporttest.com营销邮箱markettest.cn 个人邮箱zhangsan123163.com无效邮箱zhangsantest # re.findall提取所有匹配的邮箱 emails re.findall(email_pattern, text) print(提取的邮箱) for email in emails: print(email) # 输出 # supporttest.com # markettest.cn # zhangsan123163.com五、实战3验证身份证号18位最后一位可为Ximport re # 身份证正则规则18位前17位数字最后一位数字/X/x id_card_pattern r^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$ # 测试数据 id_cards [110101199001011234, 11010119900101123X, 11010119900101123, 1101011990010112345] for id_card in id_cards: result re.match(id_card_pattern, id_card) if result: print(f{id_card} 是有效身份证号) else: print(f{id_card} 是无效身份证号) # 输出 # 110101199001011234 是有效身份证号 # 11010119900101123X 是有效身份证号 # 11010119900101123 是无效身份证号不足18位 # 1101011990010112345 是无效身份证号超过18位六、实战4替换文本中的敏感词import re # 敏感词正则匹配“垃圾”“骗子” sensitive_pattern r垃圾|骗子 # 测试文本 text 这个商家是骗子卖的都是垃圾产品 # re.sub替换匹配的敏感词为* new_text re.sub(sensitive_pattern, *, text) print(替换后, new_text) # 输出这个商家是*卖的都是*产品七、新手避坑指南正则规则加r前缀避免转义字符如\d不要写成\d匹配中文用[\u4e00-\u9fa5]匹配单个中文贪婪匹配正则默认贪婪尽可能多匹配加?变为非贪婪如\d?测试规则先用在线正则工具如正则表达式测试器验证规则再写代码。最后正则表达式的核心是“规则匹配”新手不用死记所有符号先掌握手机号、邮箱、身份证这3个高频场景的规则再根据需求查文档扩展。练习时可以尝试提取文本中的手机号、清洗评论中的敏感词巩固知识点。