正则表达式

本文详细介绍正则表达式的应用场景及使用方法,包括如何验证手机号码、邮箱地址、身份证号码等常见需求,并通过实例演示了如何用Python进行数据抓取与处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景
在发短信前应该先来验证一下手机号码是不是正确
邮箱地址
身份证号码

爬虫
访问一个网页, 网页源代码
对于python来说,是一串字符串
从一大段文字当中提取你想要的数据

正则表达式的常见使用场景
1 判断某一个字符串是否符合规则  注册页 判断手机号,身份证号是否合法
2 将符合规则的内容从一个庞大的字符串体系当中提取出来 爬虫,日志分析

什么是正则表达式,只和字符串打交道
是一种规则来约束字符串的规则

[1234567890]
字符组 是元字符中的一个  
在字符组中所有的字符都可以匹配任意一个字符位置上能出现的内容
如果在字符串中有任意一个字符是字符组中的内容,那么就是匹配上的项

[0-9]
[a-z]
[A-Z]
ascii编码小的值指向一个大的值
[0-9a-zA-Z]
[1-9][0-9]

\d表示匹配一个数字 [0-9]

元字符  就是一个字符的意思如一个字母,数字,标点符号,
\w  word   \W  # \是转义的意思,把这些东西转化为对应的值
\d  digit  \D
\s space   \S
\n next
\t tab

元字符
\w \d \s \W \D \S \n \t  匹配特殊字符
^ $ \b  匹配边界  ^匹配开始  $ 匹配结尾
[] [^] 字符组相关的  # [^]非字符组中的字符
| 或
() 分组  括号里面的是一组  整体来看
. 匹配除了换行符以外的任意字符

量词
? + * {n} {n,} {n,m}
\d+整数
\d+\.\d+ 小数
\d+\.\d+|\d+ 整数或小数
\d+(\.\d+)?

贪婪匹配: 正则会尽量多得帮我们匹配
   默认贪婪:回溯算法
非贪婪匹配: 会尽量少的为我们匹配
   量词?表示非贪婪,惰性匹配

身份证号码是一个长度为15或18个字符的字符串
如果是15位则全部是数字组成,首位不能为0 [1-9]\d{14}
如果是18位,首位不能为0 前17位全部是数字,末位可能是数字或x [1-9]\d{16}[\dx]

[1-9]\d{16}[\dx]|[1-9]\d{14}
[1-9]\d{14}(\d{2}{\dx]})?

匹配网址
www\.(baidu)\.com

元字符
元字符 量词
?在量词的范围内尽量少的匹配这个元字符
或把长的放前面

转义符
pattern = r'\\n'
s = r'\n'



# 1、匹配整数或者小数(包括正数和负数)
import re
ret = re.findall('(?:\-)?\d+(?:\.\d+)?', '854ffd96fdds-86yte-8.34dgf9.76')  # 
print(ret)  
# ['854', '96', '-86', '-8.34', '9.76']

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值