findall数字问题
p1=re.findall('(\d{1,3}\.){3}\d{1,3}','192.168.0.1')
print(p1)
为什么输出是['0.']??
而不是所有的东西
29
收起
正在回答 回答被采纳积分+1
1回答
好帮手乔木
2020-03-05 12:09:42
同学你好:
findall源码:
def findall(pattern, string, flags=0): “”“Return a list of all non-overlapping matches in the string. 返回字符串中所有非重叠匹配的列表。 如果模式中存在一个或多个捕获组,则返回组列表; 如果模式有多个组,这将是一个元组列表。 结果中包含空匹配。”"" return _compile(pattern, flags).findall(string)
(\d{1,3}\.){3}只会输出符合组内容的第3个。
需要非捕获组:
捕获组和非捕获组,指的就是分组。
捕获组就是一般的分组,如果正则表达式中存在分组,则findall只会对分组中的正则进行匹配,如果只有一个分组,则返回列表,如果有多个分组,则返回为列表嵌套元祖的形式。形如:(\d+)
将捕获组转化为非捕获组只需在捕获组前加上“?:”,形如:(?:\d+)
如果我解决了同学的问题,请采纳!学习愉快^_^。
1.Python零基础入门
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星