在没有分组即没有()的情况下正常的findall使用
findall一般使用在将匹配正则表达式的所有内容全部输出,search()则是只输出匹配正则表达式的第一个内容,而且findall输出的是一个list,代码如下:
search:
import re
forTest = "Hello 12344566 world, i am Cao666,Hello 12312"
searchResult = re.search(r'H.*?\d+',forTest) #匹配H开头,后面是数字的部分
print(searchResult)
print(searchResult.group())
输出:
<re.Match object; span=(0, 14), match='Hello 12344566'>
Hello 12344566
findall:
import re
forTest = "Hello 12344566 world, i am Cao666,Hello 12312"
searchResult = re.findall(r'H.*?\d+',forTest) #匹配H开头,后面是数字的部分
print(searchResult)
输出:
['Hello 12344566', 'Hello 12312']
在有分组的情况下特殊的findall使用:
search:
import re
forTest = "Hello 12344566 world, i am Cao666,Hello 12312"
searchResult = re.search(r'H.*?(\d+)',forTest) #匹配H开头,后面是数字的部分
print(searchResult)
print(searchResult.group())
输出:
<re.Match object; span=(0, 14), match='Hello 12344566'>
Hello 12344566
findall:
import re
forTest = "Hello 12344566 world, i am Cao666,Hello 12312"
searchResult = re.findall(r'H.*?(\d+)',forTest) #匹配H开头,后面是数字的部分
print(searchResult)
输出:
['12344566', '12312']
总结:
一,在没有分组(即没有( ) )的情况下,findall就是和search的区别仅仅就是findall匹配全部,search匹配第一个,还有findall匹配之后输出的是一个list,search输出不是,search.group()得到的是一个string。
二,在有分组(即有())的情况下,findall和search的区别不仅在于数量,而且这个时候,findall会仅仅匹配分组内的内容,就是说只匹配括号里面的,这时候,findall得到的结果等于search.group(1),当然findall匹配到的结果不仅仅是search.group(1)