diff --git a/Lib/regsub.py b/Lib/regsub.py
index c87ac26..8fb3306 100644
--- a/Lib/regsub.py
+++ b/Lib/regsub.py
@@ -109,27 +109,32 @@
 
 
 # Manage a cache of compiled regular expressions.
-# If the pattern is a string a compiled version of it is returned.
-# If the pattern has been used before we return an already compiled
+#
+# If the pattern is a string a compiled version of it is returned.  If
+# the pattern has been used before we return an already compiled
 # version from the cache; otherwise we compile it now and save the
-# compiled version in the cache.
-# Instead of a string, a compiled regular expression can also be
-# passed.
-# WARNING: if the pattern syntax is changed, the cache should be
-# flushed!
+# compiled version in the cache, along with the syntax it was compiled
+# with.  Instead of a string, a compiled regular expression can also
+# be passed.
 
 cache = {}
 
 def compile(pat):
 	if type(pat) <> type(''):
 		return pat		# Assume it is a compiled regex
-	if cache.has_key(pat):
-		prog = cache[pat]	# Get it from the cache
+	key = (pat, regex.get_syntax())
+	if cache.has_key(key):
+		prog = cache[key]	# Get it from the cache
 	else:
-		prog = cache[pat] = regex.compile(pat)
+		prog = cache[key] = regex.compile(pat)
 	return prog
 
 
+def clear_cache():
+	global cache
+	cache = {}
+
+
 # Expand \digit in the replacement.
 # Each occurrence of \digit is replaced by the substring of str
 # indicated by regs[digit].  To include a literal \ in the
