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)
| 233 | |
| 234 | |
| 235 | def 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 | |
| 252 | def remove_non_capturing_groups(pattern): |
no test coverage detected