1. 程式人生 > >Python re.search和re.findall的比較

Python re.search和re.findall的比較

color 分析 pan findall python span sea 條件 一個

Python re.search和re.findall的比較:

先分析re.search

import re
s1=hjxxHelloxxrynxxPythonxxplkhjxxHixxrynxxWorldxxplk

f1=re.search(xx(.*?)xx,s1)
print(f1)

f2=re.search(xx(.*?)xx,s1).group(1)
print(f2)

f3=re.search(xx(.*?)xxrynxx(.*?)xx,s1)
print(f3)

f41=re.search(xx(.*?)xxrynxx(.*?)xx,s1).group(1)#
這裏如果用group(3)則返回no such group,可見re.search尋找第一個滿足條件序列 print(f41) f42=re.search(xx(.*?)xxrynxx(.*?)xxplkhjxx(.*?)xxrynxx(.*?)xx,s1).group(3) print(f42)
print(end)

輸出為:

<_sre.SRE_Match object; span=(2, 11), match=‘xxHelloxx‘> #數據類型為‘sre.SRE_MATCH’
Hello #數據類型為‘str’
<_sre.SRE_Match object; span=(2, 24), match=‘xxHelloxxrynxxPythonxx‘>
Hello
Hi
end

再來看re.findall:

import re
s1=hjxxHelloxxrynxxPythonxxplkhjxxHixxrynxxWorldxxplk

f1=re.findall(xx(.*?)xx,s1)
print(f1)

f2=re.findall(xx(.*?)xxrynxx(.*?)xx,s1)
print(f2)
print(f2[0])
print(f2[1][0])
print(type(f2))
print(type(f2[0]))
print(type(f2[1][0]))

print(end)

輸出為:

[‘Hello‘, ‘Python‘, ‘Hi‘, ‘World‘]
[(‘Hello‘, ‘Python‘), (‘Hi‘, ‘World‘)]
(‘Hello‘, ‘Python‘)
Hi
<class ‘list‘>
<class ‘tuple‘>
<class ‘str‘>
end

Python re.search和re.findall的比較