问答详情
源自:3-3 python正则表达式语法(三)

问题~~~

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

提问者:锅锅爱吃肉 2017-01-25 23:16

个回答

  • 流沙河矿工
    2017-01-26 11:08:14
    已采纳

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

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

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

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

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

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