学习目标:使用Python正则表达式的findall方法
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表。
match 和 search 是匹配一次 findall 匹配所有。
find=re.findall(pattern,string)
pattern:正则表达式
string:搜索的字符串
注:如果有括号,则括号里匹配的结果算放在一个元组中
例1:
正则表达式本身代表了多个正则表达式,这个正则表达式的匹配结果放在一个元组中
st=''' variables=iter,<i>C</i><sub>A</sub>,
<i>C</i><sub>N</sub>,
<i>C</i><sub>Z</sub>,
<i>C</i><sub>ml</sub>,
<i>C</i><sub>mn</sub>,
<i>C</i><sub>m</sub>,
<i>C</i><sub>L</sub>,
<i>C</i><sub>D</sub>,
<i>K</i>,
<i>CP</i><sub>x</sub>,
<i>CP</i><sub>y</sub>,
CPUTime(s)
10 100 200
'''
find=re.findall('variables=(\s*\D+,)+(\D+)\n',st)
print(find)
# [('iter,<i>C</i><sub>A</sub>, \n <i>C</i><sub>N</sub>, \n <i>C</i><sub>Z</sub>, \n <i>C</i><sub>ml</sub>,\n <i>C</i><sub>mn</sub>,\n <i>C</i><sub>m</sub>, \n <i>C</i><sub>L</sub>, \n <i>C</i><sub>D</sub>, \n <i>K</i>, \n <i>CP</i><sub>x</sub>,\n <i>CP</i><sub>y</sub>,', '\n CPUTime(s) ')]
例2:
正则表达式实际仅为一个表达式可以表示多个字符,这个正则表达式的匹配结果在列表中
st=''' variables=iter,<i>C</i><sub>A</sub>,
<i>C</i><sub>N</sub>,
<i>C</i><sub>Z</sub>,
<i>C</i><sub>ml</sub>,
<i>C</i><sub>mn</sub>,
<i>C</i><sub>m</sub>,
<i>C</i><sub>L</sub>,
<i>C</i><sub>D</sub>,
<i>K</i>,
<i>CP</i><sub>x</sub>,
<i>CP</i><sub>y</sub>,
CPUTime(s)
10 100 200
'''
find =re.findall('(\s*\D+),',st)
print(find)
# [' variables=iter,<i>C</i><sub>A</sub>, \n <i>C</i><sub>N</sub>, \n <i>C</i><sub>Z</sub>, \n <i>C</i><sub>ml</sub>,\n <i>C</i><sub>mn</sub>,\n <i>C</i><sub>m</sub>, \n <i>C</i><sub>L</sub>, \n <i>C</i><sub>D</sub>, \n <i>K</i>, \n <i>CP</i><sub>x</sub>,\n <i>CP</i><sub>y</sub>']