Convert all remaining *simple* cases of regex usage to re usage.
diff --git a/Lib/fmt.py b/Lib/fmt.py
index f7c2718..3f146cb 100644
--- a/Lib/fmt.py
+++ b/Lib/fmt.py
@@ -461,9 +461,9 @@
 		self.paralist[para2].invert(d, pos1, pos2)
 	#
 	def search(self, prog):
-		import regex, string
+		import re, string
 		if type(prog) == type(''):
-			prog = regex.compile(string.lower(prog))
+			prog = re.compile(string.lower(prog))
 		if self.selection:
 			iold = self.selection[0][0]
 		else:
@@ -474,8 +474,9 @@
 				continue
 			p = self.paralist[i]
 			text = string.lower(p.extract())
-			if prog.search(text) >= 0:
-				a, b = prog.regs[0]
+			match = prog.search(text)
+			if match:
+				a, b = match.group(0)
 				long1 = i, a
 				long2 = i, b
 				hit = long1, long2
diff --git a/Lib/fnmatch.py b/Lib/fnmatch.py
index 9b31856..ed81594 100644
--- a/Lib/fnmatch.py
+++ b/Lib/fnmatch.py
@@ -10,6 +10,8 @@
 corresponding to PATTERN.  (It does not compile it.)
 """
 
+import re
+
 _cache = {}
 
 def fnmatch(name, pat):
@@ -42,11 +44,8 @@
 	
 	if not _cache.has_key(pat):
 		res = translate(pat)
-		import regex
-		save_syntax = regex.set_syntax(0)
-		_cache[pat] = regex.compile(res)
-		save_syntax = regex.set_syntax(save_syntax)
-	return _cache[pat].match(name) == len(name)
+		_cache[pat] = re.compile(res)
+	return _cache[pat].match(name) is not None
 
 def translate(pat):
 	"""Translate a shell PATTERN to a regular expression.
@@ -85,8 +84,6 @@
 						stuff = stuff[1:] + stuff[0]
 					stuff = '[' + stuff + ']'
 				res = res + stuff
-		elif c in '\\.+^$':
-			res = res + ('\\' + c)
 		else:
-			res = res + c
-	return res
+			res = res + re.escape(c)
+	return res + "$"
diff --git a/Lib/fpformat.py b/Lib/fpformat.py
index 4574575..404738d 100644
--- a/Lib/fpformat.py
+++ b/Lib/fpformat.py
@@ -11,11 +11,11 @@
 # digits_behind: number of digits behind the decimal point
 
 
-import regex
+import re
 
 # Compiled regular expression to "decode" a number
-decoder = regex.compile( \
-	'^\([-+]?\)0*\([0-9]*\)\(\(\.[0-9]*\)?\)\(\([eE][-+]?[0-9]+\)?\)$')
+decoder = re.compile( \
+	'^([-+]?)0*([0-9]*)((\.[0-9]*)?)(([eE][-+]?[0-9]+)?)$')
 # \0 the whole thing
 # \1 leading sign or empty
 # \2 digits left of decimal point
@@ -30,10 +30,9 @@
 # fraction is 0 or more digits
 # expo is an integer
 def extract(s):
-	if decoder.match(s) < 0: raise NotANumber
-	(a1, b1), (a2, b2), (a3, b3), (a4, b4), (a5, b5) = decoder.regs[1:6]
-	sign, intpart, fraction, exppart = \
-		s[a1:b1], s[a2:b2], s[a3:b3], s[a5:b5]
+	m = decoder.match(s)
+	if not m: raise NotANumber
+	sign, intpart, fraction, exppart = m.group(1, 2, 3, 5)
 	if sign == '+': sign = ''
 	if fraction: fraction = fraction[1:]
 	if exppart: expo = eval(exppart[1:])
diff --git a/Lib/glob.py b/Lib/glob.py
index 990ffa3..599d41b5 100644
--- a/Lib/glob.py
+++ b/Lib/glob.py
@@ -2,7 +2,7 @@
 
 import os
 import fnmatch
-import regex
+import re
 
 
 def glob(pathname):
@@ -50,7 +50,7 @@
 	return result
 
 
-magic_check = regex.compile('[*?[]')
+magic_check = re.compile('[*?[]')
 
 def has_magic(s):
-	return magic_check.search(s) >= 0
+	return magic_check.search(s) is not None
diff --git a/Lib/keyword.py b/Lib/keyword.py
index 2ad80d7..ba9249d 100755
--- a/Lib/keyword.py
+++ b/Lib/keyword.py
@@ -7,10 +7,7 @@
 #  To update the symbols in this file, 'cd' to the top directory of
 #  the python source tree after building the interpreter and run:
 #
-#    PYTHONPATH=./Lib ./python Lib/keyword.py
-#
-#  (this path allows the import of string.py and regexmodule.so
-#  for a site with no installation in place)
+#    python Lib/keyword.py
 
 kwlist = [
 #--start keywords--
@@ -52,7 +49,7 @@
 iskeyword = kwdict.has_key
 
 def main():
-    import sys, regex, string
+    import sys, re, string
 
     args = sys.argv[1:]
     iptfile = args and args[0] or "Python/graminit.c"
@@ -61,13 +58,15 @@
 
     # scan the source file for keywords
     fp = open(iptfile)
-    strprog = regex.compile('"\([^"]+\)"')
+    strprog = re.compile('"([^"]+)"')
     lines = []
     while 1:
         line = fp.readline()
         if not line: break
-        if string.find(line, '{1, "') > -1 and strprog.search(line) > -1:
-            lines.append("        '" + strprog.group(1) + "',\n")
+	if string.find(line, '{1, "') > -1:
+	    match = strprog.search(line)
+	    if match:
+		lines.append("        '" + match.group(1) + "',\n")
     fp.close()
     lines.sort()
 
@@ -90,4 +89,5 @@
     fp.write(string.join(format, ''))
     fp.close()
 
-if __name__ == "__main__": main()
+if __name__ == "__main__":
+    main()
diff --git a/Lib/lib-old/fmt.py b/Lib/lib-old/fmt.py
index f7c2718..3f146cb 100644
--- a/Lib/lib-old/fmt.py
+++ b/Lib/lib-old/fmt.py
@@ -461,9 +461,9 @@
 		self.paralist[para2].invert(d, pos1, pos2)
 	#
 	def search(self, prog):
-		import regex, string
+		import re, string
 		if type(prog) == type(''):
-			prog = regex.compile(string.lower(prog))
+			prog = re.compile(string.lower(prog))
 		if self.selection:
 			iold = self.selection[0][0]
 		else:
@@ -474,8 +474,9 @@
 				continue
 			p = self.paralist[i]
 			text = string.lower(p.extract())
-			if prog.search(text) >= 0:
-				a, b = prog.regs[0]
+			match = prog.search(text)
+			if match:
+				a, b = match.group(0)
 				long1 = i, a
 				long2 = i, b
 				hit = long1, long2
diff --git a/Lib/mailbox.py b/Lib/mailbox.py
index 4c4eebe..37a4636 100755
--- a/Lib/mailbox.py
+++ b/Lib/mailbox.py
@@ -5,7 +5,6 @@
 
 import rfc822
 import os
-import regex
 
 class _Mailbox:
 	def __init__(self, fp):
@@ -117,12 +116,13 @@
 
 class MHMailbox:
     def __init__(self, dirname):
-	pat = regex.compile('^[0-9][0-9]*$')
+	import re
+	pat = re.compile('^[0-9][0-9]*$')
 	self.dirname = dirname
 	files = os.listdir(self.dirname)
 	self.boxes = []
 	for f in files:
-	    if pat.match(f) == len(f):
+	    if pat.match(f):
 		self.boxes.append(f)
 
     def next(self):
@@ -187,6 +187,7 @@
 		if not msg:
 			break
 		msgs.append(msg)
+		msg.fp = None
 	if len(args) > 1:
 		num = string.atoi(args[1])
 		print 'Message %d body:'%num
diff --git a/Lib/mhlib.py b/Lib/mhlib.py
index a78b2c7..69a33ec 100644
--- a/Lib/mhlib.py
+++ b/Lib/mhlib.py
@@ -73,7 +73,7 @@
 import os
 import sys
 from stat import ST_NLINK
-import regex
+import re
 import string
 import mimetools
 import multifile
@@ -236,9 +236,9 @@
 
 # Class representing a particular folder
 
-numericprog = regex.compile('^[1-9][0-9]*$')
+numericprog = re.compile('^[1-9][0-9]*$')
 def isnumeric(str):
-    return numericprog.match(str) >= 0
+    return numericprog.match(str) is not None
 
 class Folder:
 
@@ -906,15 +906,12 @@
 	f = open(file, 'r')
     except IOError:
 	return None
-    pat = key + ':'
-    if casefold:
-	prog = regex.compile(pat, regex.casefold)
-    else:
-	prog = regex.compile(pat)
+    pat = re.escape(key) + ':'
+    prog = re.compile(pat, casefold and re.IGNORECASE)
     while 1:
 	line = f.readline()
 	if not line: break
-	if prog.match(line) >= 0:
+	if prog.match(line):
 	    text = line[len(key)+1:]
 	    while 1:
 		line = f.readline()
@@ -931,18 +928,15 @@
 	f.close()
     except IOError:
 	lines = []
-    pat = key + ':\(.*\)\n'
-    if casefold:
-	prog = regex.compile(pat, regex.casefold)
-    else:
-	prog = regex.compile(pat)
+    pat = re.escape(key) + ':(.*)\n'
+    prog = re.compile(pat, casefold and re.IGNORECASE)
     if value is None:
 	newline = None
     else:
 	newline = '%s: %s\n' % (key, value)
     for i in range(len(lines)):
 	line = lines[i]
-	if prog.match(line) == len(line):
+	if prog.match(line):
 	    if newline is None:
 		del lines[i]
 	    else:
diff --git a/Lib/nntplib.py b/Lib/nntplib.py
index a266cbd..85c2a63 100644
--- a/Lib/nntplib.py
+++ b/Lib/nntplib.py
@@ -29,7 +29,7 @@
 
 
 # Imports
-import regex
+import re
 import socket
 import string
 
@@ -313,13 +313,13 @@
 	# - list: list of (nr, value) strings
 
 	def xhdr(self, hdr, str):
+		pat = re.compile('^([0-9]+) ?(.*)\n?')
 		resp, lines = self.longcmd('XHDR ' + hdr + ' ' + str)
 		for i in range(len(lines)):
 			line = lines[i]
-			n = regex.match('^[0-9]+', line)
-			nr = line[:n]
-			if n < len(line) and line[n] == ' ': n = n+1
-			lines[i] = (nr, line[n:])
+			m = pat.match(line)
+			if m:
+				lines[i] = m.group(1, 2)
 		return resp, lines
 
 	# Process an XOVER command (optional server extension) Arguments:
@@ -354,14 +354,13 @@
 	# - list: list of (name,title) strings
 
 	def xgtitle(self, group):
-		line_pat = regex.compile("^\([^ \t]+\)[ \t]+\(.*\)$")
+		line_pat = re.compile("^([^ \t]+)[ \t]+(.*)$")
 		resp, raw_lines = self.longcmd('XGTITLE ' + group)
 		lines = []
 		for raw_line in raw_lines:
-			if line_pat.search(string.strip(raw_line)) == 0:
-				lines.append(line_pat.group(1),
-					     line_pat.group(2))
-
+			match = line_pat.search(string.strip(raw_line))
+			if match:
+				lines.append(match.group(1, 2))
 		return resp, lines
 
 	# Process an XPATH command (optional server extension) Arguments:
diff --git a/Lib/pipes.py b/Lib/pipes.py
index 0ae0b8c..2bb6ee3 100644
--- a/Lib/pipes.py
+++ b/Lib/pipes.py
@@ -61,7 +61,7 @@
 
 
 import sys
-import regex
+import re
 
 import os
 import tempfile
@@ -124,10 +124,10 @@
 		if self.steps <> [] and self.steps[-1][1] == SINK:
 			raise ValueError, \
 			      'Template.append: already ends with SINK'
-		if kind[0] == 'f' and regex.search('\$IN', cmd) < 0:
+		if kind[0] == 'f' and not re.search('\$IN\b', cmd):
 			raise ValueError, \
 			      'Template.append: missing $IN in cmd'
-		if kind[1] == 'f' and regex.search('\$OUT', cmd) < 0:
+		if kind[1] == 'f' and not re.search('\$OUT\b', cmd):
 			raise ValueError, \
 			      'Template.append: missing $OUT in cmd'
 		self.steps.append((cmd, kind))
@@ -146,10 +146,10 @@
 		if self.steps <> [] and self.steps[0][1] == SOURCE:
 			raise ValueError, \
 			      'Template.prepend: already begins with SOURCE'
-		if kind[0] == 'f' and regex.search('\$IN\>', cmd) < 0:
+		if kind[0] == 'f' and not re.search('\$IN\b', cmd):
 			raise ValueError, \
 			      'Template.prepend: missing $IN in cmd'
-		if kind[1] == 'f' and regex.search('\$OUT\>', cmd) < 0:
+		if kind[1] == 'f' and not re.search('\$OUT\b', cmd):
 			raise ValueError, \
 			      'Template.prepend: missing $OUT in cmd'
 		self.steps.insert(0, (cmd, kind))
diff --git a/Lib/plat-irix5/cddb.py b/Lib/plat-irix5/cddb.py
index 57cf3c6..acd7870 100755
--- a/Lib/plat-irix5/cddb.py
+++ b/Lib/plat-irix5/cddb.py
@@ -81,18 +81,17 @@
 		self.notes = []
 		if not hasattr(self, 'file'):
 			return
-		import regex
-		reg = regex.compile('^\\([^.]*\\)\\.\\([^:]*\\):[\t ]+\\(.*\\)')
+		import re
+		reg = re.compile(r'^([^.]*)\.([^:]*):[\t ]+(.*)')
 		while 1:
 			line = f.readline()
 			if not line:
 				break
-			if reg.match(line) == -1:
+			match = reg.match(line)
+			if not match:
 				print 'syntax error in ' + file
 				continue
-			name1 = line[reg.regs[1][0]:reg.regs[1][1]]
-			name2 = line[reg.regs[2][0]:reg.regs[2][1]]
-			value = line[reg.regs[3][0]:reg.regs[3][1]]
+			name1, name2, value = match.group(1, 2, 3)
 			if name1 == 'album':
 				if name2 == 'artist':
 					self.artist = value
diff --git a/Lib/plat-irix5/cdplayer.py b/Lib/plat-irix5/cdplayer.py
index 5c2c95a..0e27468 100755
--- a/Lib/plat-irix5/cdplayer.py
+++ b/Lib/plat-irix5/cdplayer.py
@@ -39,8 +39,8 @@
 			f = open(posix.environ['HOME'] + '/' + cdplayerrc, 'r')
 		except IOError:
 			return
-		import regex
-		reg = regex.compile('^\\([^:]*\\):\t\\(.*\\)')
+		import re
+		reg = re.compile(r'^([^:]*):\t(.*)')
 		s = self.id + '.'
 		l = len(s)
 		while 1:
@@ -49,11 +49,11 @@
 				break
 			if line[:l] == s:
 				line = line[l:]
-				if reg.match(line) == -1:
+				match = reg.match(line)
+				if not match:
 					print 'syntax error in ~/' + cdplayerrc
 					continue
-				name = line[reg.regs[1][0]:reg.regs[1][1]]
-				value = line[reg.regs[2][0]:reg.regs[2][1]]
+				name, valye = match.group(1, 2)
 				if name == 'title':
 					self.title = value
 				elif name == 'artist':
diff --git a/Lib/plat-irix5/flp.py b/Lib/plat-irix5/flp.py
index 14e2278..a277f7f 100755
--- a/Lib/plat-irix5/flp.py
+++ b/Lib/plat-irix5/flp.py
@@ -267,19 +267,18 @@
 # This function parses a line, and returns either
 # a string or a tuple (name,value)
 
-import regex
-prog = regex.compile('^\([^:]*\): *\(.*\)')
+import re
+prog = re.compile('^([^:]*): *(.*)')
 
 def _parse_line(line):
-    if prog.match(line) < 0:
+    match = prog.match(line)
+    if not match:
 	return line
-    a = prog.regs
-    name = line[:a[1][1]]
+    name, value = match.group(1, 2)
     if name[0] == 'N':
-	    name = string.joinfields(string.split(name),'')
+	    name = string.join(string.split(name),'')
 	    name = string.lower(name)
-    name = string.upper(name[0]) + name[1:]
-    value = line[a[2][0]:]
+    name = string.capitalize(name)
     try:
 	pf = _parse_func[name]
     except KeyError:
diff --git a/Lib/plat-irix6/cddb.py b/Lib/plat-irix6/cddb.py
index 57cf3c6..acd7870 100644
--- a/Lib/plat-irix6/cddb.py
+++ b/Lib/plat-irix6/cddb.py
@@ -81,18 +81,17 @@
 		self.notes = []
 		if not hasattr(self, 'file'):
 			return
-		import regex
-		reg = regex.compile('^\\([^.]*\\)\\.\\([^:]*\\):[\t ]+\\(.*\\)')
+		import re
+		reg = re.compile(r'^([^.]*)\.([^:]*):[\t ]+(.*)')
 		while 1:
 			line = f.readline()
 			if not line:
 				break
-			if reg.match(line) == -1:
+			match = reg.match(line)
+			if not match:
 				print 'syntax error in ' + file
 				continue
-			name1 = line[reg.regs[1][0]:reg.regs[1][1]]
-			name2 = line[reg.regs[2][0]:reg.regs[2][1]]
-			value = line[reg.regs[3][0]:reg.regs[3][1]]
+			name1, name2, value = match.group(1, 2, 3)
 			if name1 == 'album':
 				if name2 == 'artist':
 					self.artist = value
diff --git a/Lib/plat-irix6/cdplayer.py b/Lib/plat-irix6/cdplayer.py
index 5c2c95a..0e27468 100644
--- a/Lib/plat-irix6/cdplayer.py
+++ b/Lib/plat-irix6/cdplayer.py
@@ -39,8 +39,8 @@
 			f = open(posix.environ['HOME'] + '/' + cdplayerrc, 'r')
 		except IOError:
 			return
-		import regex
-		reg = regex.compile('^\\([^:]*\\):\t\\(.*\\)')
+		import re
+		reg = re.compile(r'^([^:]*):\t(.*)')
 		s = self.id + '.'
 		l = len(s)
 		while 1:
@@ -49,11 +49,11 @@
 				break
 			if line[:l] == s:
 				line = line[l:]
-				if reg.match(line) == -1:
+				match = reg.match(line)
+				if not match:
 					print 'syntax error in ~/' + cdplayerrc
 					continue
-				name = line[reg.regs[1][0]:reg.regs[1][1]]
-				value = line[reg.regs[2][0]:reg.regs[2][1]]
+				name, valye = match.group(1, 2)
 				if name == 'title':
 					self.title = value
 				elif name == 'artist':
diff --git a/Lib/plat-irix6/flp.py b/Lib/plat-irix6/flp.py
index 14e2278..a277f7f 100644
--- a/Lib/plat-irix6/flp.py
+++ b/Lib/plat-irix6/flp.py
@@ -267,19 +267,18 @@
 # This function parses a line, and returns either
 # a string or a tuple (name,value)
 
-import regex
-prog = regex.compile('^\([^:]*\): *\(.*\)')
+import re
+prog = re.compile('^([^:]*): *(.*)')
 
 def _parse_line(line):
-    if prog.match(line) < 0:
+    match = prog.match(line)
+    if not match:
 	return line
-    a = prog.regs
-    name = line[:a[1][1]]
+    name, value = match.group(1, 2)
     if name[0] == 'N':
-	    name = string.joinfields(string.split(name),'')
+	    name = string.join(string.split(name),'')
 	    name = string.lower(name)
-    name = string.upper(name[0]) + name[1:]
-    value = line[a[2][0]:]
+    name = string.capitalize(name)
     try:
 	pf = _parse_func[name]
     except KeyError:
diff --git a/Lib/posixpath.py b/Lib/posixpath.py
index 965184b..9960801 100644
--- a/Lib/posixpath.py
+++ b/Lib/posixpath.py
@@ -266,15 +266,15 @@
 	if '$' not in path:
 		return path
 	if not _varprog:
-		import regex
-		_varprog = regex.compile('$\([a-zA-Z0-9_]+\|{[^}]*}\)')
+		import re
+		_varprog = re.compile(r'\$(\w+|\{[^}]*\})')
 	i = 0
 	while 1:
-		i = _varprog.search(path, i)
-		if i < 0:
+		m = _varprog.search(path, i)
+		if not m:
 			break
-		name = _varprog.group(1)
-		j = i + len(_varprog.group(0))
+		i, j = m.span(0)
+		name = m.group(1)
 		if name[:1] == '{' and name[-1:] == '}':
 			name = name[1:-1]
 		if os.environ.has_key(name):
diff --git a/Lib/pstats.py b/Lib/pstats.py
index 7e4a385..5bc70b3 100644
--- a/Lib/pstats.py
+++ b/Lib/pstats.py
@@ -35,7 +35,7 @@
 import time
 import string
 import marshal
-import regex
+import re
 
 #**************************************************************************
 # Class Stats documentation
@@ -300,7 +300,7 @@
 		if type(sel) == type(""):
 			new_list = []
 			for func in list:
-				if 0<=regex.search(sel, func_std_string(func)):
+				if re.search(sel, func_std_string(func)):
 					new_list.append(func)
 		else:
 			count = len(list)
diff --git a/Lib/rfc822.py b/Lib/rfc822.py
index 6e584eb..70ac1f8 100644
--- a/Lib/rfc822.py
+++ b/Lib/rfc822.py
@@ -38,7 +38,7 @@
 # There are also some utility functions here.
 
 
-import regex
+import re
 import string
 import time
 
@@ -311,7 +311,7 @@
 
 error = 'parseaddr.error'
 
-specials = regex.compile('[][()<>,.;:@\\" \000-\037\177-\377]')
+specials = re.compile(r'[][()<>,.;:@\" \000-\037\177-\377]')
 
 def quote(str):
 	return '"%s"' % string.join(
@@ -408,7 +408,7 @@
 				else:
 					name.append(token[1])
 			elif token[0] == 1 and cur is addr:
-				if specials.search(token[1]) >= 0:
+				if specials.search(token[1]):
 					cur.append(quote(token[1]))
 				else:
 					cur.append(token[1])
@@ -423,7 +423,7 @@
 			if token[0] == 2:
 				name.append(token[1])
 			elif token[0] == 1:
-				if specials.search(token[1]) >= 0:
+				if specials.search(token[1]):
 					addr.append(quote(token[1]))
 				else:
 					addr.append(token[1])
@@ -563,4 +563,3 @@
 	print 'keys =', m.keys()
 	print 'values =', m.values()
 	print 'items =', m.items()
-	
diff --git a/Lib/string.py b/Lib/string.py
index 5cf5b6f..3f65978 100644
--- a/Lib/string.py
+++ b/Lib/string.py
@@ -193,17 +193,20 @@
 	return r
 
 # Convert string to float
+re = None
 def atof(str):
-	import regex
+	global re
+	if re is None:
+		import re
 	sign = ''
-	s = str
+	s = strip(str)
 	if s and s[0] in '+-':
 		sign = s[0]
 		s = s[1:]
 	if not s:
 		raise ValueError, 'non-float argument to string.atof'
 	while s[0] == '0' and len(s) > 1 and s[1] in digits: s = s[1:]
-	if regex.match('[0-9]*\(\.[0-9]*\)?\([eE][-+]?[0-9]+\)?', s) != len(s):
+	if not re.match('[0-9]*(\.[0-9]*)?([eE][-+]?[0-9]+)?$', s):
 		raise ValueError, 'non-float argument to string.atof'
 	try:
 		return float(eval(sign + s))
diff --git a/Lib/stringold.py b/Lib/stringold.py
index 5cf5b6f..3f65978 100644
--- a/Lib/stringold.py
+++ b/Lib/stringold.py
@@ -193,17 +193,20 @@
 	return r
 
 # Convert string to float
+re = None
 def atof(str):
-	import regex
+	global re
+	if re is None:
+		import re
 	sign = ''
-	s = str
+	s = strip(str)
 	if s and s[0] in '+-':
 		sign = s[0]
 		s = s[1:]
 	if not s:
 		raise ValueError, 'non-float argument to string.atof'
 	while s[0] == '0' and len(s) > 1 and s[1] in digits: s = s[1:]
-	if regex.match('[0-9]*\(\.[0-9]*\)?\([eE][-+]?[0-9]+\)?', s) != len(s):
+	if not re.match('[0-9]*(\.[0-9]*)?([eE][-+]?[0-9]+)?$', s):
 		raise ValueError, 'non-float argument to string.atof'
 	try:
 		return float(eval(sign + s))
diff --git a/Lib/token.py b/Lib/token.py
index 3d358a3..888bb41 100755
--- a/Lib/token.py
+++ b/Lib/token.py
@@ -7,10 +7,7 @@
 #  To update the symbols in this file, 'cd' to the top directory of
 #  the python source tree after building the interpreter and run:
 #
-#    PYTHONPATH=./Lib ./python Lib/token.py
-#
-#  (this path allows the import of string.py and regexmodule.so
-#  for a site with no installation in place)
+#    python Lib/token.py
 
 #--start constants--
 ENDMARKER = 0
@@ -73,7 +70,7 @@
 
 
 def main():
-    import regex
+    import re
     import string
     import sys
     args = sys.argv[1:]
@@ -88,13 +85,14 @@
 	sys.exit(1)
     lines = string.splitfields(fp.read(), "\n")
     fp.close()
-    re = regex.compile(
-	"#define[ \t][ \t]*\([A-Z][A-Z_]*\)[ \t][ \t]*\([0-9][0-9]*\)",
-	regex.casefold)
+    prog = re.compile(
+	"#define[ \t][ \t]*([A-Z][A-Z_]*)[ \t][ \t]*([0-9][0-9]*)",
+	re.IGNORECASE)
     tokens = {}
     for line in lines:
-	if re.match(line) > -1:
-	    name, val = re.group(1, 2)
+	match = prog.match(line)
+	if match:
+	    name, val = match.group(1, 2)
 	    val = string.atoi(val)
 	    tokens[val] = name		# reverse so we can sort them...
     keys = tokens.keys()
diff --git a/Lib/tzparse.py b/Lib/tzparse.py
index ef325e9..358e0cc 100644
--- a/Lib/tzparse.py
+++ b/Lib/tzparse.py
@@ -2,23 +2,22 @@
 # XXX Unfinished.
 # XXX Only the typical form "XXXhhYYY;ddd/hh,ddd/hh" is currently supported.
 
-tzpat = '^\([A-Z][A-Z][A-Z]\)\([-+]?[0-9]+\)\([A-Z][A-Z][A-Z]\);' + \
-	  '\([0-9]+\)/\([0-9]+\),\([0-9]+\)/\([0-9]+\)$'
+tzpat = ('^([A-Z][A-Z][A-Z])([-+]?[0-9]+)([A-Z][A-Z][A-Z]);'
+	  '([0-9]+)/([0-9]+),([0-9]+)/([0-9]+)$')
 
 tzprog = None
 
 def tzparse(tzstr):
 	global tzprog
 	if tzprog == None:
-		import regex
-		tzprog = regex.compile(tzpat)
-	if tzprog.match(tzstr) < 0:
+		import re
+		tzprog = re.compile(tzpat)
+	match = tzprog.match(tzstr)
+	if not match:
 		raise ValueError, 'not the TZ syntax I understand'
-	regs = tzprog.regs
 	subs = []
 	for i in range(1, 8):
-		a, b = regs[i]
-		subs.append(tzstr[a:b])
+		subs.append(match.group(i))
 	for i in (1, 3, 4, 5, 6):
 		subs[i] = eval(subs[i])
 	[tzname, delta, dstname, daystart, hourstart, dayend, hourend] = subs