1.re.search():search返回的是查找結果的物件(依序找到第一個成功匹配的結果後就不往後查找了,沒有查找到返回None),可以使用group()或groups()方法得到符合成功的字串。
①group()預設傳回符合成功的整個字串(忽略pattern中的括號),也可以指定在傳回符合成功的括號中第幾個字串(從1開始計數);
②groups()以元組的形式傳回符合成功的pattern中括號中的內容,若pattern中沒有括號,則傳回成功符合的字串對應的空元組。
1 >>> string = 'python' 2 >>> import re 3 >>> result = re.search(r'(yt)h(o)', string) 4 >>> result 5 <_sre.SRE_Match object at 0x000000000293DE88> 6 >>> result.group() 7 'ytho' 8 >>> result.group(0) # 参数0无效 9 'ytho'10 >>> result.group(1) # 从1开始计数11 'yt'12 >>> result.group(2)13 'o'14 >>> result.groups()15 ('yt', 'o')16 >>> result.groups(0) # 传入参数无效17 ('yt', 'o')18 >>> result.groups(1)19 ('yt', 'o')20 >>>
2. re.finditer():傳回全部查找結果的迭代器(若沒有符合成功的字串,則傳回一個空的迭代器),每個迭代對象同樣可以使用group()和groups()來取得成功配對的結果。
1 >>> string = 'one11python, two22, three33python ' 2 >>> result = re.finditer(r'(\d+)(python)', string) 3 >>> for p in result: 4 print(p.group()) 5 6 7 11python 8 33python 9 >>> for p in result:10 print(p.group(2))11 12 13 python14 python15 >>> for p in result:16 print(p.groups()) # 若是pattern中没有括号,则返回的是每个迭代器对应的空元组。17 18 19 ('11', 'python')20 ('33', 'python')
3. re.findall():以列表的形式傳回查找到的全部字串(若沒有查找到能成功匹配的字串,則傳回空的列表) 。
1 >>> string = 'one11python, two22, three33python '2 >>> result = re.findall(r'\d+python', string)3 >>> result4 ['11python', '33python']5 >>> result = re.findall(r'(\d+)(python)', string)6 >>> result7 [('11', 'python'), ('33', 'python')]
以上是Python之re操作實例教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!