正则(二)
1 #match匹配 2 # match(string[, pos[, endpos]]) 3 # string:匹配使用的文本, 4 # pos: 文本中正则表达式开始搜索的索引。及开始搜索string的下标 5 # endpos: 文本中正则表达式结束搜索的索引。 6 # 如果不指定pos,默认是从开头开始匹配,如果匹配不到,直接返回None 7 8 import re 9 reg=re.compile(r'\w*((hello w.*)(hello h.*))') 10 print(dir(reg)) 11 a='hello world hello hzd' 12 result=reg.match(a) 13 print(result) 14 print(result.groups()) 15 16 b='aa'+a 17 result2=reg.match(b) 18 #从头开始匹配,如果未找到,直接返回none 19 print(result2) 20 print(result2.groups()) 21 22 # search(string[, pos[, endpos]]) 23 # 这个方法用于查找字符串中可以匹配成功的子串。从string的pos下标处起尝试匹配pattern, 24 # 如果pattern结束时仍可匹配,则返回一个Match对象; 25 # 若无法匹配,则将pos加1后重新尝试匹配;直到pos=endpos时仍无法匹配则返回None。 26 27 #search方法与match比较,search再为找到时会重复执行多次,建议使用match 28 29 result3=reg.search(b) 30 print(result3) 31 print(result3.groups()) 32 33 34 p=re.compile(r'\d+') 35 a_str='one1two2three3four4' 36 #正则对象的split方法,使用正则匹配进行分割字符串 37 #最后以列表形式返回 38 print(p.split(a_str)) 39 #正则对象的findall方法,来查找符合对象的字符串 40 #最后以列表形式返回 41 print(p.findall(a_str)) 42 43 # finditer(string[, pos[, endpos]]) 44 # 搜索string,返回一个顺序访问每一个匹配结果(Match对象)的迭代器。 45 #迭代以后每个对象都是一个match对象 46 for i in p.finditer(a_str): 47 print(i.group()) 48 49 #sub(repl, string[, count]) 50 # 用repl替换string中每一个匹配的子串后返回替换后的字符串 51 aa=re.sub(r'123','abc','qwe123zxcasd123',count=2) 52 #表示将123替换为abc,替换次数为两次 53 print(aa) 54 55 # match匹配对象 56 # Match对象是一次匹配的结果,包含了很多关于此次匹配的信息, 57 # 可以使用Match提供的可读属性或方法来获取这些信息。 58 pp=re.compile(r'(?P<tagname>abc)(\w*)(?P=tagname)') 59 result4=pp.match('abcsafdsdfsdgfsdg1232abc213') 60 print(result4) 61 print(result4.groups()) 62 #match对象的group返回一个元组,下标以1开头 63 print(result4.group(2)) 64 print(result4.group(1)) 65 print(result4.group('tagname')) 66 print(result4.groupdict())