Python下 findall()函数在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
但是如果正则表达式里面有()分组的话,它默认是要返回所有的满足条件的分组,返回元组格式
例如
html = ”’103.216.82.199:6667174.70.241.7:24385”’pattern = re.compile(r'(([0-9]{1,3}\.){3}([0-9]{1,3}):[0-9]{1,5})’)proxies = pattern.findall(html)// [(‘103.216.82.199:6667′, ’82.’, ‘199’), (‘174.70.241.7:24385’, ‘241.’, ‘7’)]
返回的就是包含子组的元组,然后组成列表,
可使用
proxies = [match[0] for match in pattern.findall(html)]// [‘103.216.82.199:6667’, ‘174.70.241.7:24385’]
获取对应的子组内容
如果需要取消捕获分组的话,对应子组括号加上?:
pattern = re.compile(r'(?:(?:[0-9]{1,3}\.){3}(?:[0-9]{1,3}):[0-9]{1,5})’)proxies = pattern.findall(html)// [‘103.216.82.199:6667’, ‘174.70.241.7:24385’]
结果则返回正则匹配的所有内容