如何在以下代码中合并组(p1 和 p2)?
import re
txt = "Sab11Mba11"
p1 = "(S(a|b)(a|b))"
p2 = "(M(a|b)(a|b))"
px = "(" + p1 + '|' + p2 + ")"
print(re.findall(p1, txt)) # [('Sab', 'a', 'b')]
print(re.findall(p2, txt)) # [('Mba', 'b', 'a')]
print(re.findall(px, txt)) # [('Sab', 'Sab', 'a', 'b', '', '', ''), ('Mba', '', '', '', 'Mba', 'b', 'a')]
请解释为什么我会得到空字符串,以及如何获得 [('Sab','a','b'),('Mba','b','a')]
?
sub
的情况下,我应该使用相同的方法(过滤空字符串)吗?例如:`def repl(x): c = list(filter(lambda m: m != None, x.groups())) return c[2] + c[1] re.sub(px, repl, txt)` - Oleg Dats