Index: django/core/urlresolvers.py
===================================================================
--- django/core/urlresolvers.py	(revision 8391)
+++ django/core/urlresolvers.py	(working copy)
@@ -92,8 +92,9 @@
     Raises NoReverseMatch if the args/kwargs aren't valid for the regex.
     """
     # TODO: Handle nested parenthesis in the following regex.
-    result = re.sub(r'\(([^)]+)\)', MatchChecker(args, kwargs), regex.pattern)
-    return result.replace('^', '').replace('$', '').replace('\\', '')
+    pattern = re.sub(r'\(\?[iLmsux]+\)','',regex.pattern)
+    result = re.sub(r'\(([^)]+)\)', MatchChecker(args, kwargs), pattern)
+    return result.replace('^', '').replace('$', '').replace('?','').replace('\\','')
 
 class MatchChecker(object):
     "Class used in reverse RegexURLPattern lookup."
Index: tests/regressiontests/urlpatterns_reverse/tests.py
===================================================================
--- tests/regressiontests/urlpatterns_reverse/tests.py	(revision 8391)
+++ tests/regressiontests/urlpatterns_reverse/tests.py	(working copy)
@@ -24,8 +24,11 @@
     ('^people/(?P<state>\w\w)/(?P<name>\w+)/$', NoReverseMatch, [], {'name': 'adrian'}),
     ('^people/(?P<state>\w\w)/(\w+)/$', NoReverseMatch, ['il'], {'name': 'adrian'}),
     ('^people/(?P<state>\w\w)/(\w+)/$', 'people/il/adrian/', ['adrian'], {'state': 'il'}),
+    ('^test/1/?', 'test/1/', [], {}),
+    ('^(?i)test/2/?$', 'test/2/', [], {})
 )
 
+
 class URLPatternReverse(unittest.TestCase):
     def test_urlpattern_reverse(self):
         for regex, expected, args, kwargs in test_data:
