关于findall
比如:
a = re.compile('aa(\d*)b')
b = a.findall('aa233bad43')
print(b)
返回结果为['233']
为什么只返回分组内的结果列表,而不是['aa233b']
还有请问为什么compile里加r和不加r结果一样,r的作用不是说是使用原字符串,不用对特殊字符转移,那为啥r'\d'不是去匹配\d这俩字符,也去匹配数字
21
收起
正在回答
3回答
我试着回答一下吧,
1、先说为什么要加r:正则表达式中使用“\”作为转义字符,如果需要匹配文本中的字符“\”,在正则表达式中需要4个“\”,首先,前2个“\”和后两个“\”在python解释器中分别转义成一个“\”,然后转义后的2个“\”在正则中被转义成一个“\”。
2、findall()返回的是括号所匹配到的结果,多个括号就会返回多个括号分别匹配到的结果, 如果没有括号就返回就返回整条语句所匹配到的结果。 这个特性是正则表达式特有的,而不仅仅只是python语言。
程序如下修改就可以获得你想要的结果,多个括号的问题可以自己再试试:
import re
a=re.compile(r'aa\d*b')
b=a.findall('aa233bad43')
print(b)
相似问题
登录后可查看更多问答,登录/注册
1.Python零基础入门
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星