Turn all capturing groups in a regular expression pattern into non-capturing groups.
(p)
| 251 | |
| 252 | |
| 253 | def _re_flatten(p): |
| 254 | ''' Turn all capturing groups in a regular expression pattern into |
| 255 | non-capturing groups. ''' |
| 256 | if '(' not in p: return p |
| 257 | return re.sub(r'(\\*)(\(\?P<[^>]+>|\((?!\?))', |
| 258 | lambda m: m.group(0) if len(m.group(1)) % 2 else m.group(1) + '(?:', p) |
| 259 | |
| 260 | |
| 261 | class Router(object): |