正则表达式匹配学习

本文介绍了Python中使用re模块进行正则表达式的操作,包括编译规则、search().group()方法、分组、管道匹配、问号可选匹配、星号和加号的重复匹配等核心概念。通过实例演示了如何在文本中查找和提取信息,是Python正则表达式学习的实用指南。
摘要由CSDN通过智能技术生成

正则规则传值

使用模块为re,向re.compile传入一个正则字符串的表达式规则,返回一个regex模式对象(简称regex对象)

import re
re.compile(r"字符串值")
search().group()

regex对象的search()方法查找传入的字符串,寻找正则表达式所有匹配的。没有匹配返回None,找到了模式,search()返回一个Match对象。Match对象,有group()方法,返回被查找文本。

###实例1
text1="is  number 131-234-2345"
phoneNumber=re.compile(r"\d\d\d-\d\d\d-\d\d\d\d")
print(phoneNumber.search(text1).group())
##结果
131-234-2345
分组

添加括号在正则表达式中创建“分组”,(\d\d\d)-()\d\d\d-\d\d\d\d"),从一个分组中获取匹配的文本。向group()匹配的对象方法传入整数1合作2,获取匹配文本的不同部分。如果是一次性获取所有分组,使用groups(),返回多个元组

#实例2
phoneNumber=re.compile(r"(\d\d\d)-(\d\d\d-\d\d\d\d)")
print(phoneNumber.search(text1).group(0))
print(phoneNumber.search(text1).group(1))
print(phoneNumber.search(text1).group(2))


str1,str2=phoneNumber.search(text1).groups()
print(str1)
print(str2)
#结果
131-234-2345
131
234-2345

131
234-2345
管道匹配

字符|称为“管道” 希望匹配许多表达式中一个时候们可以用他。也可用于匹配多个模式中的一个,作为正则表达式一部分。

#实例3
test2="this  is  bat"
heroRegex=re.compile(r"bat|shell")
print(heroRegex.search(test2).group())

test3="this  is there  bat"
batTest=re.compile(r"th(is|ere)")
print(batTest.search(test3).group())
print(batTest.search(test3).group(1))
bat
this
is
问号实现可选匹配

可选匹配就是说,不论终端文本存在不存在,正则表达式都会匹配。

#实例4
test4="man is  woman  and  to  lowershell"
testRe=re.compile(r"w(o)?man")
print(testRe.search(test4).group())
testRe2=re.compile(r"wo(n)?man")
print(testRe2.search(test4).group())


iphoneStr1="is  number 131-234-2345"
iphoneStr2="is  number 234-2345"
iphoneRe=re.compile(r"(\d\d\d-)?(\d\d\d-\d\d\d\d)")
print(iphoneRe.search(iphoneStr1).group())
print(iphoneRe.search(iphoneStr2).group())
#结果
woman
woman
131-234-2345
234-2345
用星号匹配零次或多次

* (称星号)是"匹配零次或者多次",即星号之前的分组,可以在文本中出现任意次。他可以完全不存在,或者一次又一次的重复。

#实例5
testStr="woman bat is computer"
print(re.compile("wo(no)*man").search(testStr).group())
testStr1="wowoman bat is computer"
print(re.compile("wo(wo)*man").search(testStr1).group())
testStr2="wowowowowoman bat is computer"
print(re.compile("wo(wo)*man").search(testStr2).group())
结果
woman
wowoman
wowowowowoman
用加号匹配一次或多次

*意味着“匹配零次或多次”,+(加号)意味着匹配一次或者多次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值