問題~~~
問題 : 為什么 ma=re.match(r'[abc]','ab') 返回值不是None 而ma=re.match(r'{[abc]}','{ab}')返回值就是None?不是只差一個{}嗎?為什么不能返回'{a}'呢? 一直沒有搞清楚到底什么時候返回值會是None 什么時候即使超出了規(guī)定長度,也可以截取之前的有效字符串返回
問題 : 為什么 ma=re.match(r'[abc]','ab') 返回值不是None 而ma=re.match(r'{[abc]}','{ab}')返回值就是None?不是只差一個{}嗎?為什么不能返回'{a}'呢? 一直沒有搞清楚到底什么時候返回值會是None 什么時候即使超出了規(guī)定長度,也可以截取之前的有效字符串返回
2017-01-25
舉報
2017-01-26
Hello,我試了一下,其實是這樣的:
正則表達式是從前往后一個一個字符匹配,如果走完了你的正則表達式,沒出現(xiàn)問題,就返回匹配值。
比如r'[abc]',它匹配abc字符中的一個,'ab'中匹配完a之后,正則表達式運行完畢,沒有問題,返回了a,結(jié)束。
但是在r'{[abc]}'中,先匹配了{,然后匹配abc中的一個,在你的例子里是a,然后匹配}卻匹配不到,因為你的字符串里這時是'b}',它匹配},找到了b,認為有問題,直接匹配就不成功了。
不不妨嘗試ma=re.match(r'{[abc]','{ab}'),這樣能返回匹配結(jié)果'{a',即一個{加上abc中的一個字母。
希望我解釋清楚了,如果不明白可以問我。