python正则表达式三
import re
'''
字符串切割
'''
str1 = "sunck is a good man"
print ( str1. split( " " ) )
print ( re. split( r" +" , str1) )
'''
re.finditer(pattern, string, flags=0)
参数:
pattern:匹配的正则表达式
string:要匹配的字符串
flage:标志位,用于控制正则表达式的匹配方式,值如下
re.I 忽略大小写
re.L 做本地识别
re.M 多行匹配,影响^和$
re.S 是.匹配包括换行符在内的所有字符
re.U 根据Unicose字符集解析字符,影响\w \W \b \B
re.X 使我们以更灵活的格式理解正则表达式
功能: 与findall类似,扫描整个字符串,返回的是一个迭代器
'''
str2 = "sunck is a good man! sunck is a nice man! sunck is a handsome man!"
d = re. finditer( r"sunck.*?man" , str2)
while True :
try :
print ( next ( d) )
except StopIteration as e:
break
'''
字符串的替换和修改
sub(pattern, repl, string, count=0, flage=0)
subn(pattern, repl, string, count=0, flage=0)
pattern: 正则表达式
repl: 指定用来替换的字符串
string: 目标字符串
count: 最多替换次数
功能:早目标字符串中以正则表达式的规则匹配字符串,把他们替换成指定的字符串,可以指定替换次数,如果不指定
区别:sub返回一个替换后的字符串
subn返回一个元组,第一个参数是替换后的字符串,第二个参数返回替换的次数
'''
str3 = "sunck is a good good good man"
print ( re. sub( r"good" , "nice" , str3, count= 2 ) )
print ( type ( re. sub( r"good" , "nice" , str3) ) )
print ( re. subn( r"good" , "nice" , str3) )
print ( type ( re. subn( r"good" , "nice" , str3) ) )
'''
分组:
概念:除了简单的判断是否匹配之外,正则表达式还有提取子串的功能。用()表示分组
'''
str4 = "010-53247654"
m = re. match( r"(?P<first>\d{3})-(?P<last>\d{8})" , str4)
print ( m. group( 0 ) )
print ( "1" )
print ( m. group( 1 ) )
print ( "2" )
print ( m. group( 2 ) )
print ( m. group( ) )
print ( m)
print ( m. group( "first" ) )
print ( m. group( "last" ) )
'''
编译:当我们使用正则表达式时,re模块会干两件事
1、编译整个表达式,如果正则表达式本身不合法,会报错
2、编译后的正则表达式匹配对象
compile(pattern, flags = 0)
pattern:要编译的正则表达式
'''
pat = r"^1(([3578]\d)|(47))\d{8}$"
print ( re. match( pat, "13600000000" ) )
re_telephone = re. compile ( pat)
print ( re_telephone. match( "13600000000" ) )