python 66:re正则表达式4(全- tcy)
发布日期:2021-06-29 14:48:15 浏览次数:2 分类:技术文章

本文共 3150 字,大约阅读时间需要 10 分钟。

目录:

 

模式match对象方法 2018/12/17 
Match.group(num=0)         #获取匹配的组,缺省返回组 0, 也就是全部值Match..group ([g1,g2,...]) #返回组号为g1,g2所匹配字符串,组号不存在抛indexError  # 参数用编号或别名;编号0或无代表整个匹配子串;  # 无匹配返回None;截获了多次的组返回最后一次截获的子串。Match.groups([default])    #返回全部的组  # 相当于group(1,2,…last)。default表示无截获字符串组以这个值替代,默认为NoneMatch.groupdict([default]) #返回别名组的子串;别名为键、子串为值的字典  #没有别名的组不包含在内。default含义同上。Match.expand(template):    #将匹配到的分组代入template中返回匹配的子串  # 参数:template用\id或\g
、\g
引用分组,禁用编号0。 # \id与\g
是等价的;但\10将被认为是第10个分组,如果你想表达\1之后是字符'0',只能使用\g<1>0Match.start([group]) #返回组匹配子串在str起始索引(子串第一个字符的索引)Match.end([group]) #返回组匹配子串在str结束的位置,默认0Match.span() #返回组子串在str中(开始,结束)位置的元组

实例: 

# 实例0:a = "123abc456"re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0) #123abc456,返回整体re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1) #123re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2) #abcre.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3) #456 
实例1:- 属性 
m = re.match(r'(\w+) (\w+)(?P
.*)', 'hello world!')m.string # 匹配时使用文本 # hello world!m.re # 匹配时使用Pattern对象 # re.compile('(\\w+) (\\w+)(?P
.*)')m.pos # 文本中正则表达式开始搜索的索引 # 0m.endpos # 文本正则表达式结束搜索的索引 # 12m.lastindex # 最后1个分组在文本中索引。如无返回None# 3m.lastgroup # 最后1个分组的别名。无返回None # 'sign' 
实例2:- 方法
m.group(1,2) #获得组1组2截获的字符串       #('hello', 'world')m.groups()   #获取全部组子串               #('hello', 'world', '!')m.groupdict()#获取别名sign组的子串         #{'sign': '!'}m.expand(r'\2 \1\3')#提取指定分组匹配的子串 #world hello!m.start(2)   #组2子串开始索引     # 6m.end(2)     #组2子串结束索引     # 11m.span(2)    #组2子串开始结束索引 # (6, 11) 

其他实例 

# 实例1:s= 'Tom:9527 , Sharry:0003'm=re.match( r'(?P
\w+):(?P
\d+)' , s )m[0] #: 'Tom:9527'm.group(0) #: 'Tom:9527'm.group() # 'Tom:9527'm.groups() # ('Tom', '9527')m[1] #: 'Tom'm.group(1) #: 'Tom'm.group('name')# 'Tom'm[2] #: '9527'm.group(2) #: '9527'm.group('num') # '9527'# 实例2:p = re.compile('(ab)*') #将匹配零次或多次重复 abp.match('ababababab').span() # (0, 10)m = re.match('(a)b','ab').group() # 'ab'm = re.match('(a(b)c)d','abcd')m.group(0)# 'abcd'm.group(1)# 'abc'm.group(2)# 'b'm.group(2,1,2)#传递多个组号 # ('b', 'abc', 'b')m.groups() #所有子组的字符串的元组# ('abc', 'b')# 实例3:match = re.search('(?P
\d{3})(?P
\d{2})''(?P
\d{2})(?P
\d{4})', '02112172018xx')match.groupdict() # {'city': '021', 'month': '12', 'day': '17', 'year': '2018'}# 实例4:# 'dog' 全部替换成 'cat's=' I have a dog , you have a dog , he have a dog 're.sub( r'dog' , 'cat' , s ) # ' I have a cat , you have a cat , he have a cat '# 替换前面两个re.sub( r'dog' , 'cat' , s , 2 )# ' I have a cat , you have a cat , he have a dog '# 发生了多少次替换,则可以使用 subnre.subn( r'dog' , 'cat' , s ) # (' I have a cat , you have a cat , he have a cat ', 3)# 实例5:字符串被 ',' 分割去掉逗号前后空格s=' I have a dog   ,   you have a dog  ,  he have a dog 're.split( '\s*,\s*' , s ) # [' I have a dog', 'you have a dog', 'he have a dog ']# 实例6:- 特殊字符匹配# 将特殊字符用反义字符的形式显示出来。s= '111 222 (*+?) 333' # 匹配 '(*+?)' 这个子字符串rule= re.escape( r'(*+?)' ) # \(\*\+\?\)re.findall( rule , s ) # ['(*+?)']

转载地址:https://chunyou.blog.csdn.net/article/details/85157072 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python 66:re正则表达式5(全- tcy)
下一篇:python 66:re正则表达式3(全- tcy)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月26日 18时28分05秒