I think pat1 = \'[ab]\' and pat2 = \'a|b\' have the same function in Python(python2.7, windows) \'re\' module as a regular expression pattern. But I am confused with \'[ab]+
You have a capturing group in the first pattern.
According to the docs,
re.split()
... If capturing parentheses are used in pattern, then the text of all groups in the pattern are also returned as part of the resulting list. ...
Try making the group non-capturing and see if you get what you expect:
pat1 = '(?:a|b)+'