为了账号安全,请及时绑定邮箱和手机立即绑定

问题~~~

问题 : 为什么 ma=re.match(r'[abc]','ab') 返回值不是None 而ma=re.match(r'{[abc]}','{ab}')返回值就是None?不是只差一个{}吗?为什么不能返回'{a}'呢? 一直没有搞清楚到底什么时候返回值会是None 什么时候即使超出了规定长度,也可以截取之前的有效字符串返回

正在回答

1 回答

Hello,我试了一下,其实是这样的:

正则表达式是从前往后一个一个字符匹配,如果走完了你的正则表达式,没出现问题,就返回匹配值。

比如r'[abc]',它匹配abc字符中的一个,'ab'中匹配完a之后,正则表达式运行完毕,没有问题,返回了a,结束。

但是在r'{[abc]}'中,先匹配了{,然后匹配abc中的一个,在你的例子里是a,然后匹配}却匹配不到,因为你的字符串里这时是'b}',它匹配},找到了b,认为有问题,直接匹配就不成功了。

不不妨尝试ma=re.match(r'{[abc]','{ab}'),这样能返回匹配结果'{a',即一个{加上abc中的一个字母。

希望我解释清楚了,如果不明白可以问我。

4 回复 有任何疑惑可以回复我~
#1

锅锅爱吃肉 提问者

灰常感谢大神!完全理解啦!
2017-01-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python正则表达式
  • 参与学习       80582    人
  • 解答问题       174    个

如何使用正则处理文本,带你对python正则有个全面了解

进入课程
意见反馈 帮助中心 APP下载
官方微信