Deal with case of when locale time values has characters that can be mistaken
for regex syntax.
Fixes bug #883604 .
diff --git a/Lib/test/test_strftime.py b/Lib/test/test_strftime.py
index 44e2ae2..e9d3826 100755
--- a/Lib/test/test_strftime.py
+++ b/Lib/test/test_strftime.py
@@ -28,6 +28,16 @@
         for i in range(25):
             strftest(now + (i + j*100)*23*3603)
 
+def escapestr(text, ampm):
+    """Escape text to deal with possible locale values that have regex
+    syntax while allowing regex syntax used for the comparison."""
+    new_text = re.escape(text)
+    new_text = new_text.replace(re.escape(ampm), ampm)
+    new_text = new_text.replace("\%", "%")
+    new_text = new_text.replace("\:", ":")
+    new_text = new_text.replace("\?", "?")
+    return new_text
+
 def strftest(now):
     if verbose:
         print "strftime test for", time.ctime(now)
@@ -50,6 +60,8 @@
     elif now[3] > 0: clock12 = now[3]
     else: clock12 = 12
 
+    # Make sure any characters that could be taken as regex syntax is
+    # escaped in escapestr()
     expectations = (
         ('%a', calendar.day_abbr[now[6]], 'abbreviated weekday name'),
         ('%A', calendar.day_name[now[6]], 'full weekday name'),
@@ -110,7 +122,7 @@
         except ValueError, error:
             print "Standard '%s' format gave error:" % e[0], error
             continue
-        if re.match(e[1], result): continue
+        if re.match(escapestr(e[1], ampm), result): continue
         if not result or result[0] == '%':
             print "Does not support standard '%s' format (%s)" % (e[0], e[2])
         else:
@@ -125,7 +137,7 @@
                 print "Error for nonstandard '%s' format (%s): %s" % \
                       (e[0], e[2], str(result))
             continue
-        if re.match(e[1], result):
+        if re.match(escapestr(e[1], ampm), result):
             if verbose:
                 print "Supports nonstandard '%s' format (%s)" % (e[0], e[2])
         elif not result or result[0] == '%':