Fix two bugs:

(1) maxsplit was ignored in split().

(2) groups() would return a string instead of a singleton tuple when
there was only one group.
diff --git a/Lib/re.py b/Lib/re.py
index b3c266c..3fb9408 100644
--- a/Lib/re.py
+++ b/Lib/re.py
@@ -203,6 +203,7 @@
 		if type(g)==type( "" ): g = [g]
 		results[len(results):] = list(g)
 	    pos = lastmatch = j
+	    n = n + 1
 	results.append(source[lastmatch:])
 	return results
 
@@ -259,11 +260,13 @@
     
     def groups(self):
 	"Return a tuple containing all subgroups of the match object"
-
-	# If _num_regs==1, we don't want to call self.group with an
-	# empty tuple.
-	if self.re._num_regs == 1: return ()
-	return apply(self.group, tuple(range(1, self.re._num_regs) ) )
+	result = []
+	for g in range(1, self.re._num_regs):
+	    if (self.regs[g][0] == -1) or (self.regs[g][1] == -1):
+		result.append(None)
+	    else:
+		result.append(self.string[self.regs[g][0]:self.regs[g][1]])
+	return tuple(result)
 
     def group(self, *groups):
 	"Return one or more groups of the match."