如果我有几个不同的正则表达式,我想做这样的嵌套正则表达式
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
我提醒使用群组捕捉,但它们只匹配完成匹配的第一组的完全相同的东西,而不是模式。感谢
答案 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))
但是如果可能的话,你应该尝试找到更简洁的方法来形成这个正则表达式。