More tweaks; re.py is nearly there...
diff --git a/Lib/test/output/test_re b/Lib/test/output/test_re
index 7ba8cfa..182ca05 100644
--- a/Lib/test/output/test_re
+++ b/Lib/test/output/test_re
@@ -34,7 +34,6 @@
 ('a[b-d]e', 'ace', 0, 'found', 'ace')
 ('a[b-d]', 'aac', 0, 'found', 'ac')
 ('a[-b]', 'a-', 0, 'found', 'a-')
-=== Syntax error: ('a[-b]', 'a-', 0, 'found', 'a-')
 ('a[b-]', 'a-', 2)
 ('a[]b', '-', 2)
 ('a[', '-', 2)
@@ -43,16 +42,12 @@
 ('(abc', '-', 2)
 ('a]', 'a]', 0, 'found', 'a]')
 ('a[]]b', 'a]b', 0, 'found', 'a]b')
-=== Syntax error: ('a[]]b', 'a]b', 0, 'found', 'a]b')
 ('a[^bc]d', 'aed', 0, 'found', 'aed')
 ('a[^bc]d', 'abd', 1)
 ('a[^-b]c', 'adc', 0, 'found', 'adc')
-=== Syntax error: ('a[^-b]c', 'adc', 0, 'found', 'adc')
 ('a[^-b]c', 'a-c', 1)
-=== Syntax error: ('a[^-b]c', 'a-c', 1)
 ('a[^]b]c', 'a]c', 1)
 ('a[^]b]c', 'adc', 0, 'found', 'adc')
-=== Failed incorrectly ('a[^]b]c', 'adc', 0, 'found', 'adc')
 ('\\ba\\b', 'a-', 0, '"-"', '-')
 ('\\ba\\b', '-a', 0, '"-"', '-')
 ('\\ba\\b', '-a-', 0, '"-"', '-')
@@ -64,8 +59,7 @@
 ('()ef', 'def', 0, 'found+"-"+g1', 'ef-')
 === Syntax error: ('()ef', 'def', 0, 'found+"-"+g1', 'ef-')
 ('$b', 'b', 1)
-('a(b', 'a(b', 0, 'found+"-"+g1', 'a(b-None')
-=== Syntax error: ('a(b', 'a(b', 0, 'found+"-"+g1', 'a(b-None')
+('a\\(b', 'a(b', 0, 'found+"-"+g1', 'a(b-None')
 ('a\\(*b', 'ab', 0, 'found', 'ab')
 ('a\\(*b', 'a((b', 0, 'found', 'a((b')
 ('a\\\\b', 'a\\b', 0, 'found', 'a\\b')
@@ -113,7 +107,6 @@
 ('\\((.*), (.*)\\)', '(a, b)', 0, 'g2+"-"+g1', 'b-a')
 ('[k]', 'ab', 1)
 ('a[-]?c', 'ac', 0, 'found', 'ac')
-=== Syntax error: ('a[-]?c', 'ac', 0, 'found', 'ac')
 ('(abc)\\1', 'abcabc', 0, 'g1', 'abc')
 ('([a-c]*)\\1', 'abcabc', 0, 'g1', 'abc')
 ('^(.+)?B', 'AB', 0, 'g1', 'A')
diff --git a/Lib/test/re_tests.py b/Lib/test/re_tests.py
index a43b4ac..393e2b2 100755
--- a/Lib/test/re_tests.py
+++ b/Lib/test/re_tests.py
@@ -136,7 +136,7 @@
 ('()ef', 'def', SUCCEED,
  'found+"-"+g1', 'ef-'),
 ('$b', 'b', FAIL),
-('a(b', 'a(b', SUCCEED,
+('a\\(b', 'a(b', SUCCEED,
  'found+"-"+g1', 'a(b-None'),
 ('a\\(*b', 'ab', SUCCEED,
  'found', 'ab'),
diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py
index 39d3df0..cef14b0 100644
--- a/Lib/test/test_re.py
+++ b/Lib/test/test_re.py
@@ -41,16 +41,15 @@
 		# Matched, as expected, so now we compute the
 		# result string and compare it to our expected result.
 		start, end = result.span(0)
-		vardict={'found': result.group(0)}
+		vardict={'found': result.group(0), 'groups': result.group()}
 		for i in range(1, 100):
 		    try:
 			gi = result.group(i)
 			# Special hack because else the string concat fails:
 			if gi is None: gi = "None"
 		    except IndexError:
-			break
-		    else:
-			vardict['g%d' % i] = gi
+			gi = "None"
+		    vardict['g%d' % i] = gi
 		repl=eval(repl, vardict)
 		if repl!=expected:
 		    print '=== grouping error', t,