正则表达式基本方法和元字符匹配

split:

 

match:从头开始匹配

import re
# 使用正则表达式需要导入re包
s = "chen shuai"
# match 方法从头开始匹配,如果刚开始就不匹配就不会管后面的
result = re.match("chen", s)
print(result)
print(type(result))

输出: span代表匹配成功的位置,match表示匹配成功的字符串,如果没有匹配成功那么返回None

<re.Match object; span=(0, 4), match='chen'>
<class 're.Match'>

search:搜索整个字符串找出匹配的,找到第一个后就停止,不会继续向后,若整个字符串都没有匹配到就返回None。

import re
# 使用正则表达式需要导入re包
s = "1chen 2shuai3chen"

result = re.search("chen", s)
print(result)
print(type(result))

输出:

<re.Match object; span=(1, 5), match='chen'>
<class 're.Match'>

findall:匹配整个字符串,找出全部匹配项,找不到就返回空list(如果里面有括号分组,就会把每个组的结果都返回回来)

import re
# 使用正则表达式需要导入re包
s = "1chen 2shuai3chen"

result = re.findall("chen", s)
print(result)
print(type(result))

输出:

['chen', 'chen']
<class 'list'>

元字符匹配:

 

实例1:[a-zA-Z0-9]表示限制范围{6,10}表示限制前面的长度

# 匹配账号,要求只能由字母和数字组成,长度限制6到10位
r = '^[a-zA-Z0-9]{6,10}$'
s1 = '1234567'
s2 = '!123tre'
print(re.findall(r, s1))
print(re.findall(r, s2))

 输出:

['1234567']
[]

实例2:[1-9]后面没有跟长度表示第一位[0-9]表示后面几位

import re
# 使用正则表达式需要导入re包
# 匹配qq号,只能为数字且第一位不为0,长度5-11
r = '^[1-9][0-9]{4,10}$'
s1 = '1234567'
s2 = '0123tre'
print(re.findall(r, s1))
print(re.findall(r, s2))

输出:

['1234567']
[]

实例3:findall:(如果里面有括号分组,就会把每个组的结果都返回回来)

将整体放到一个分组内便于findall输出,[\w-]+表示里面可以使单词字符和-,长度最少为1

(\.[\w-]+)表示第一个是一个.(点),后面是单词字符和-长度最小为1。后面的*号表示可以有很多个第二个分组里的内容

import re
# 使用正则表达式需要导入re包
# 匹配邮箱地址,只允许qq、163、gmail这三种邮箱地址
r = r'(^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$)'
s1 = '1234567@qq.com'
s2 = '0123tre@165.com'
print(re.match(r, s1))
print(re.match(r, s2))
print(re.findall(r, s1))

输出:

<re.Match object; span=(0, 14), match='1234567@qq.com'>
None
[('1234567@qq.com', '', 'qq', '.com')]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值