Turn all capturing groups in a regular expression pattern into non-capturing groups.
(p)
| 278 | |
| 279 | |
| 280 | def _re_flatten(p): |
| 281 | """ Turn all capturing groups in a regular expression pattern into |
| 282 | non-capturing groups. """ |
| 283 | if '(' not in p: |
| 284 | return p |
| 285 | return re.sub(r'(\\*)(\(\?P<[^>]+>|\((?!\?))', lambda m: m.group(0) if |
| 286 | len(m.group(1)) % 2 else m.group(1) + '(?:', p) |
| 287 | |
| 288 | |
| 289 | class Router(object): |