Python3中re.finditer与re.findall函数用法详解

re.finditer(pattern, string[, flags=0])
re.findall(pattern, string[, flags=0])

pattern :自定义要匹配的字符,或者compile 生成的正则表达式对象
string :要匹配的文本内容

findall 返回一个包含所有匹配到的字符的列表,列表类以元组的形式存在。

import re
text = '123.nihao,是的.ni'
pattern = 'ni'
a = re.findall(pattern,text) # findall 得到的是一个列表
print(a)
print(type(a))
print('================')
for i in re.findall(pattern,text):
    print(i)
    print(type(i))

#输出结果
['ni', 'ni']
<class 'list'>
================
ni
<class 'str'>
ni
<class 'str'>

finditer 返回一个可迭代对象

import re
text = '123.nihao,是的.ni'
pattern = 'ni'
a = re.finditer(pattern,text) # finditer 得到的结果是个可迭代对象
print(a)
print(type(a))
print('=======================================')
for i in re.finditer(pattern,text):# i 本身也是可迭代对象,不能直接显示内容,所以下面要使用 i.group()才可以将匹配到的内容显示出来
    print(i)
    print(type(i))
    print(i.group())
    print('*********************************')
    
#输出结果
<callable_iterator object at 0x10ddaddf0>
<class 'callable_iterator'>
=======================================
<re.Match object; span=(4, 6), match='ni'>
<class 're.Match'>
ni
*********************************
<re.Match object; span=(13, 15), match='ni'>
<class 're.Match'>
ni
*********************************

猜你喜欢

转载自blog.csdn.net/zy4828918/article/details/109310428