问题 : 为什么 ma=re.match(r'[abc]','ab') 返回值不是None 而ma=re.match(r'{[abc]}','{ab}')返回值就是None?不是只差一个{}吗?为什么不能返回'{a}'呢? 一直没有搞清楚到底什么时候返回值会是None 什么时候即使超出了规定长度,也可以截取之前的有效字符串返回
Hello,我试了一下,其实是这样的:
正则表达式是从前往后一个一个字符匹配,如果走完了你的正则表达式,没出现问题,就返回匹配值。
比如r'[abc]',它匹配abc字符中的一个,'ab'中匹配完a之后,正则表达式运行完毕,没有问题,返回了a,结束。
但是在r'{[abc]}'中,先匹配了{,然后匹配abc中的一个,在你的例子里是a,然后匹配}却匹配不到,因为你的字符串里这时是'b}',它匹配},找到了b,认为有问题,直接匹配就不成功了。
不不妨尝试ma=re.match(r'{[abc]','{ab}'),这样能返回匹配结果'{a',即一个{加上abc中的一个字母。
希望我解释清楚了,如果不明白可以问我。