模式字符串及正则匹配实例

1.\d---十进制数字,\D---非十进制数字

提取字符串中的数字

# 提取字符串中的数字
import re

str1 = "360人最近报名"
# sub函数中第一个参数:对什么替换(\D表示非十进制数),第二个参数:替换为什么,第三个参数:操作的对象
rst = re.sub("\d", "*", str1)
print(rst)
输出结果:
***人最近报名

rst = re.sub("\d", "*", str1)
print(rst)
输出结果:
360*****

【注意】\D可用来提取字符串中的数字---将非十进制数替换为空

2.{n}恰好n次

匹配电话号码

# 匹配电话号码
str2 = "python0997-5252312hadoop"
pat = "\d{4}-\d{7}"
r = re.findall(pat, str2)
print(r)
输出结果:
['0997-5252312']

3.|或 ---模式选择符

匹配多个电话号码

# 匹配多个电话号码
str3 = "python0997-5252312hadoop010-84843212spark"
pat = "\d{4}-\d{7}|\d{3}-\d{8}"   # 中间用或|
r = re.findall(pat, str3)
print(r)
输出结果:
['0997-5252312', '010-84843212']

4.{n,m}至少n,至多m次

匹配字符串中的qq号

# 匹配字符串中的qq号
str4 = "技术讨论QQ群:12345678,欢迎交流讨论"
pat = "\d{5,13}"
r= re.findall(pat,str4)
print(r)
输出结果:
['12345678']

5.[...]表示一组字符

[djt]匹配d,j或t

[a-z]匹配‘a’到'z'范围内的任意小写 字母字符

 

6.[^...]匹配不在[ ]中的字符

[^djt]匹配除'd,'j'或't'之外

 

7.+ 匹配前面的子表达式一次或多次 

 +等价于{1,} 

[a-zA-Z]+  等价于[a-zA-Z]{1,}

 

8.\s空白字符    

[^\s] ---非空白字符

 

9. \S除空白字符

     \S等价于[^\s]

 

10.(?:pattern)

匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配

()模式单元---获取这一匹配

匹配网址:

# 匹配网址
str5 = "<a href='https://www.baidu.com'>百度</a>"
pat = "[a-zA-Z]+://[^\s]*(?:.com|.cn|.org)"
r = re.findall(pat, str5)
print(r)
输出结果:
['https://www.baidu.com']

11.^开始位置

 

12.$结束位置

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值