Python-用正则表达式匹配

(记录学习第1天)

正则表达式英语:regex

Python中所有正则表达式的函数都在re模块中,记得先写上(后面的代码块省略了)

import re

函数介绍:

向re.compile()传入一个字符串值,表示正则表达式

search()方法:查找传入的字符串,以寻找该正则表达式的所有匹配

group()方法:返回被查找字符串中实际匹配的文本

下面是几方面的举例:

1、利用括号分组

phoneNumberRegex1 = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
m1 = phoneNumberRegex1.search('my phone number is 123-456-7890')
print('phone number found:'+m1.group())
#输出的是phone number found:123-456-7890

phoneNumberRegex2 = re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)')#分成两组
m2 = phoneNumberRegex2.search('my phone number is 123-456-7890')
print(m2.group(0)) #输出的是123-456-7890
print(m2.group(1)) #输出的是123
print(m2.group(2)) #输出的是456-7890

phoneNumberRegex3 = re.compile(r'(\(\+\d\d\)) (\d\d\d \d\d\d \d\d\d\d)')#分成两组
m3 = phoneNumberRegex3.search('my phone number is (+86) 138 000 0831')#该电话号码取自郭德纲的相声
print(m3.group()) #输出的是(+86) 138 000 0831,括号里写0或1都一样的结果
print(m3.group(1)) #输出的是(+86)
print(m3.group(2)) #输出的是138 000 0831

如果要检测以下这些字符的文本模式,包括:.  ^  $  *  +  ?  {  }  [  ]  \  |  (  )

需要用斜杠对它们进行转义。

2、用管道匹配多个分组

batMobile = re.compile(r'Bat(man|mobile|copter)')
m4 = batMobile.search('Batmobile lost a wheel')
print(m4.group(0))#输出Batmobile
print(m4.group(1))#输出mobile

3、用问号实现可选匹配

phoneRegex1 = re.compile(r'(\d\d\d-)?\d\d\d-\d\d\d\d')
m5 = phoneRegex1.search('123-456-1234')
m6 = phoneRegex1.search('456-1234')
print(m5.group())#输出123-456-1234
print(m6.group())#输出456-1234

4、用星号匹配零次或多次

phoneRegex2 = re.compile(r'奥(利)*奥')
m7 = phoneRegex2.search('奥奥')
m8 = phoneRegex2.search('奥利利利利利利奥')
print(m7.group())#输出奥奥
print(m8.group())#输出奥利利利利利利奥

5、用加号匹配一次或多次

phoneRegex3 = re.compile(r'奥(利)+奥')
m9 = phoneRegex3.search('奥利奥')
m10 = phoneRegex3.search('奥利利利利利利奥')
print(m9.group()) #输出奥利奥
print(m10.group()) #输出奥利利利利利利奥

6、用花括号匹配特定次数

phoneRegex4 = re.compile(r'(HA){2}')
m9 = phoneRegex4.search('HAHA')
print(m9.group()) #输出HAHA
phoneRegex4 = re.compile(r'(HA){3,}')#大于等于三次
m10 = phoneRegex4.search('HAHAHA')
print(m10.group()) #HAHAHA

7、不区分大小写的匹配

robot = re.compile(r'robot',re.I)
m11 = robot.search('ROboT')
print(m11.group())#输出ROboT

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值