在前面的例子里开始学习组嵌套的模式匹配,然而使用这个嵌套时,如果碰到选择符(|)就要小心一些了,在下面的例子里就演示了两个不同的正则表达式的差别,例子如下:
#python 3.6
#蔡军生
#http://blog.csdn.net/caimouse/article/details/51749579
#
from re_test_patterns_groups import test_patterns
test_patterns(
'abbaabbba',
[(r'a((a+)|(b+))', 'a then seq. of a or seq. of b'),
(r'a((a|b)+)', 'a then seq. of [ab]')],
)
结果输出如下:
'a((a+)|(b+))' (a then seq. of a or seq. of b)
'abbaabbba'
'abb' ('bb', None, 'bb')
'aa' ('a', 'a', None)
'a((a|b)+)' (a then seq. of [ab])
'abbaabbba'
'abbaabbba' ('bbaabbba', 'a')
'a((a+)|(b+))'会先匹配a字符,再匹配b字符;而'a((a|b)+)'会匹配a或b字符,再匹配还是a或b字符。