嵌套分组Python中的正则表达式

时间:2014-03-02 04:53:12

标签: python regex nested

如果我有几个不同的正则表达式,我想做这样的嵌套正则表达式

r1 = re.compile(r'SO ON')
r2 = re.compile(r'WHATEVER AND (%s)*' % r1.pattern)
r3 = re.compile(r'WHATEVER AND (%s) (%s)' % (r1.pattern, 'r2.pattern'))

现在r3正常工作。但是,如果我想做这样的事情呢

r4 = re.compile(r'(r1)(r2)(r1)(r2)(r2)' % (r1.pattern, 'r2.'pattern'))
##NOT VALID CODE, JUST FOR EXPLANATION

我提醒使用群组捕捉,但它们只匹配完成匹配的第一组的完全相同的东西,而不是模式。感谢

1 个答案:

答案 0 :(得分:3)

我对你使用引号感到有些困惑,但你似乎在询问字符串格式。您可以尝试格式化正则表达式字符串,如下所示:

>>> r'({r1})({r2})({r1})({r2})({r2})'.format(r1=r1.pattern, r2=r2.pattern)
'(SO ON)(WHATEVER AND (SO ON)*)(SO ON)(WHATEVER AND (SO ON)*)(WHATEVER AND (SO ON)*)'

所以在你的场景中,你可以尝试这样的正则表达式:

r4 = re.compile(r'({r1})({r2})({r1})({r2})({r2})'.format(r1=r1.pattern, r2=r2.pattern))

但是如果可能的话,你应该尝试找到更简洁的方法来形成这个正则表达式。