diff --git a/Tools/freeze/makeconfig.py b/Tools/freeze/makeconfig.py
index 5d1ba2c..11c97d8 100644
--- a/Tools/freeze/makeconfig.py
+++ b/Tools/freeze/makeconfig.py
@@ -1,4 +1,4 @@
-import regex
+import re
 
 
 # Write the config.c file
@@ -6,8 +6,8 @@
 never = ['marshal', '__main__', '__builtin__', 'sys', 'exceptions']
 
 def makeconfig(infp, outfp, modules, with_ifdef=0):
-	m1 = regex.compile('-- ADDMODULE MARKER 1 --')
-	m2 = regex.compile('-- ADDMODULE MARKER 2 --')
+	m1 = re.compile('-- ADDMODULE MARKER 1 --')
+	m2 = re.compile('-- ADDMODULE MARKER 2 --')
 	while 1:
 		line = infp.readline()
 		if not line: break
diff --git a/Tools/freeze/parsesetup.py b/Tools/freeze/parsesetup.py
index 1795671..7f90075 100644
--- a/Tools/freeze/parsesetup.py
+++ b/Tools/freeze/parsesetup.py
@@ -1,6 +1,6 @@
 # Parse Makefiles and Python Setup(.in) files.
 
-import regex
+import re
 import string
 
 
@@ -8,7 +8,7 @@
 # Return a dictionary mapping names to values.
 # May raise IOError.
 
-makevardef = regex.compile('^\([a-zA-Z0-9_]+\)[ \t]*=\(.*\)')
+makevardef = re.compile('^([a-zA-Z0-9_]+)[ \t]*=(.*)')
 
 def getmakevars(filename):
 	variables = {}
@@ -18,9 +18,10 @@
 			line = fp.readline()
 			if not line:
 				break
-			if makevardef.match(line) < 0:
+			matchobj = makevardef.match(line)
+			if not matchobj:
 				continue
-			name, value = makevardef.group(1, 2)
+			(name, value) = matchobj.group(1, 2)
 			# Strip trailing comment
 			i = string.find(value, '#')
 			if i >= 0:
@@ -37,7 +38,7 @@
 # definitions, the second mapping variable names to their values.
 # May raise IOError.
 
-setupvardef = regex.compile('^\([a-zA-Z0-9_]+\)=\(.*\)')
+setupvardef = re.compile('^([a-zA-Z0-9_]+)=(.*)')
 
 def getsetupinfo(filename):
 	modules = {}
@@ -52,8 +53,9 @@
 			i = string.find(line, '#')
 			if i >= 0:
 				line = line[:i]
-			if setupvardef.match(line) >= 0:
-				name, value = setupvardef.group(1, 2)
+			matchobj = setupvardef.match(line)
+			if matchobj:
+				(name, value) = matchobj.group(1, 2)
 				variables[name] = string.strip(value)
 			else:
 				words = string.split(line)
