正则规则传值
使用模块为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
用加号匹配一次或多次
*意味着“匹配零次或多次”,+(加号)意味着匹配一次或者多次
。