python3的正则表达式

一、python3的正则表达式使用流程。

  1. 用import re 导入正则表达式模块。 
  2. 用re.compile()函数创建一个Regex对象(记得使用原始字符串)。 
  3. 向Regex对象的search()方法传入想查找的字符串。它返回一个Match对象。 
  4. 调用Match对象的group()方法,返回实际匹配文本的字符串。
import re
phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
mo = phoneNumRegex.search('My number is 415-555-4242.')
print('Phone number found: ' + mo.group())

#运行结果:415-555-4242

注:Regex对象的search()方法只找到字符串中出现的第一个符合正则表达式的部分,如果想要找到所有符合正则表达式的部分,可以用findall()方法,findall()方法返回一个列表。

import re
phoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
numList = phoneNumRegex.findall('Cell: 415-555-9999 Work: 212-555-0000')
for num in numList:
    print(num)

#运行结果
#415-555-9999
#212-555-0000

二、正则表达式的规则

1、利用括号分组(\d\d\d)-(\d\d\d-\d\d\d\d)。然后可以使用group()匹配对象方法,从一个分组中获取匹配的文本。 正则表达式字符串中的第一对括号是第1组。第二对括号是第2组。向group()匹配对象方法传入整数1或2,就可以取得匹配文本的不同部分。向group()方法传入0或不传入参数,将返回整个匹配的文本。 

import re
phoneNumRegex = re.compile(r'(\d\d\d)-(\d\d\d-\d\d\d\d)')
mo = phoneNumRegex.search('My number is 415-555-4242.')
print(mo.group(1)) #结果415
print(mo.group(2)) #结果555-4242
print(mo.group(0)) #结果415-555-4242
print(mo.group()) #结果415-555-4242

2、用管道匹配多个分组。字符|称为“管道”。希望匹配许多表达式中的一个时,就可以使用它。例如,
正则表达式r'Batman|Tina Fey'将匹配'Batman'或'Tina Fey'。

import re
heroRegex = re.compile (r'Batman|Tina Fey')
mo1 = heroRegex.search('Batman and Tina Fey.')
print(mo1.group()) #运行结果Batman

3、用问号实现可选匹配。字符?表明它前面的分组在这个模式中是可选的。

import re
batRegex = re.compile(r'Bat(wo)?man')
mo1 = batRegex.search('The Adventures of Batman')
print(mo1.group())
#运行结果:Batman
mo2 = batRegex.search('The Adventures of Batwoman')
print(mo2.group())
#运行结果:Batwoman

4、用星号匹配零次或多次。*意味着“匹配零次或多次”,即星号之前的分组。

5、用加号匹配一次或多次。+意味着“匹配一次或多次”

import re
batRegex = re.compile(r'Bat(wo)*man')
mo1 = batRegex.search('The Adventures of Batman')
print(mo1.group())
#运行结果:Batman

mo2 = batRegex.search('The Adventures of Batwoman')
print(mo2.group())
#运行结果:Batwoman

mo3 = batRegex.search('The Adventures of Batwowowowoman')
print(mo3.group())
#运行结果:Batwowowowoman

bat2Regex = re.compile(r'Bat(wo)+man')
moo2 = bat2Regex.search('The Adventures of Batwowowowoman')
print(moo2.group())
#运行结果:Batwowowowoman

mooo3 = bat2Regex.search('The Adventures of Batman')
print(mooo3 == None)
#运行结果:True

6、用花括号匹配特定次数。正则表达式(Ha){3}将匹配字符串'HaHaHa',但不会匹配'HaHa',
因为后者只重复了(Ha)分组两次

import re
haRegex = re.compile(r'(Ha){3}') 
mo1 = haRegex.search('HaHaHa') 
mo1.group() 
'HaHaHa' 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值