正则表达式

正则表达式通俗点就是按照一定的规则,从某个字符串中匹配出想要的数据。这个规则就是正则表达式。

语法介绍

匹配字符串

text = 'hello world'
ret = re.match("he",text)
print(ret.group())
# he

点(.)匹配任意的字符

text = 'hello world'
ret = re.match(".",text)
print(ret.group())
# h

\d匹配任意数字

text = "28043234431"
ret = re.match('\d',text)
print(ret.group())
# 2

\D匹配任意非数字

text = "d280d43234431"
ret = re.match('\D',text)
print(ret.group())

\s匹配的是空白字符(包括:\n,\t,\r和空格)

text = "\t"
ret = re.match('\s',text)
print(ret.group())

##\S匹配任意非空白字符串

text = "S\t"
ret = re.match('\S',text)
print(ret.group())

\w匹配字母和数字和下划线

text = "_"
ret = re.match('\w',text)
print(ret.group())

\W匹配的是和\w相反的

text = "**"
ret = re.match('\W',text)
print(ret.group())

[]组合

[]匹配方括号内的条件

text = "0316-13643212345"
ret = re.match('[\d\-]+',text)
print(ret.group())
# 0316-13643212345

上边的集中使用规则,例如
\d: [0-9]
\D: [^0-9]
\w: [0-9a-zA-Z]
\W: [^0-9a-zA-Z]
#多字符匹配

* (可以匹配0或者任意多个字符)

text = "0316-13643212345"
ret = re.match('\d*',text)
print(ret.group())
# 0316

+:可以匹配1个或者多个字符

text = "0316-13643212345"
ret = re.match('\d+',text)
print(ret.group())
# 0316

?:出现0或1次

text = "0316-13643212345"
ret = re.match('\d?',text)
print(ret.group())
# 0

{}出现指定次数

text = "0316-13643212345"
ret = re.match('\d{3}',text)
print(ret.group())
# 013

{m,n}:匹配m-n个字符

text = "0316-13643212345"
ret = re.match('\d{2,3}',text)
print(ret.group())
#013

最少m个,最大n个
上边都是一些常用的功能键,下边我们就实战一下。

验证手机号

text = "13643333333"
ret = re.match('1[34678]\d{9}',text)
print(ret.group())
# 13643338850

验证邮箱

test_love_123@163.com 我就随便来个邮箱

text = "test_love_123@163.com"
ret = re.match('\w+@\w+\.[a-zA-Z]+',text)
print(ret.group())

验证URL

我们打开百度,搜索正则表达式,找一个连接

text = "https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fr=aladdin"
ret = re.match('(http|https)://\S+',text)
print(ret.group())

身份证号

简单来算,就是前17未是数字,最后一位是数字或者xX

text = "13022210032101120X"
ret = re.match('\d{17}[\dxX]', text)
print(ret.group())

^(脱字号):表示以…开始:

text = "hello"
ret = re.match('^h',text)
print(ret.group())

匹配163.com的邮箱

text = "xxx@163.com"
ret = re.search('\w+@163\.com$',text)
print(ret.group())
 ## xxx@163.com

|:匹配多个表达式或者字符串:

text = "hello|world"
ret = re.search('hello',text)
print(ret.group())

贪婪模式和非贪婪模式

贪婪模式会尽量匹配多的内容,而非贪婪模式则尽可能匹配少的信息。

text = "0123456"
ret = re.match('\d+',text)
print(ret.group())
# 因为默认采用贪婪模式,所以会输出0123456
# 0123456
# 可以改成非贪婪模式,那么就只会匹配到0。示例代码如下:
text = "0123456"
ret = re.match('\d+?',text)
print(ret.group())
#0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值