正则(二)

 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())

 

posted @ 2017-11-15 22:47  依哈  阅读(128)  评论(0编辑  收藏  举报