MCPcopy
hub / github.com/django/django / replace_unnamed_groups

Function replace_unnamed_groups

django/contrib/admindocs/utils.py:235–249  ·  view source on GitHub ↗

r""" Find unnamed groups in `pattern` and replace them with '<var>'. E.g., 1. ^(?P<a>\w+)/b/(\w+)$ ==> ^(?P<a>\w+)/b/<var>$ 2. ^(?P<a>\w+)/b/((x|y)\w+)$ ==> ^(?P<a>\w+)/b/<var>$ 3. ^(?P<a>\w+)/b/(\w+) ==> ^(?P<a>\w+)/b/<var> 4. ^(?P<a>\w+)/b/((x|y)\w+) ==> ^(?P<a>\w+)/b/<var>

(pattern)

Source from the content-addressed store, hash-verified

233
234
235def replace_unnamed_groups(pattern):
236 r"""
237 Find unnamed groups in `pattern` and replace them with '<var>'. E.g.,
238 1. ^(?P<a>\w+)/b/(\w+)$ ==> ^(?P<a>\w+)/b/<var>$
239 2. ^(?P<a>\w+)/b/((x|y)\w+)$ ==> ^(?P<a>\w+)/b/<var>$
240 3. ^(?P<a>\w+)/b/(\w+) ==> ^(?P<a>\w+)/b/<var>
241 4. ^(?P<a>\w+)/b/((x|y)\w+) ==> ^(?P<a>\w+)/b/<var>
242 """
243 final_pattern, prev_end = "", None
244 for start, end, _ in _find_groups(pattern, unnamed_group_matcher):
245 if prev_end:
246 final_pattern += pattern[prev_end:start]
247 final_pattern += pattern[:start] + "<var>"
248 prev_end = end
249 return final_pattern + pattern[prev_end:]
250
251
252def remove_non_capturing_groups(pattern):

Callers 1

simplify_regexFunction · 0.90

Calls 1

_find_groupsFunction · 0.85

Tested by

no test coverage detected