我知道p=re.compile('aaa|bbb')
可以使用,但我想使用变量重写p = re.compile('aaa|bbb')
,例如
A = 'aaa'
B = 'bbb'
p = re.compile(A|B)
但这不起作用。如何重写这个以便使用变量(并且它可以工作)?
答案 0 :(得分:4)
p=re.compile(A|B)
您没有正确执行字符串连接。你正在做的是将"bitwise or" (the pipe) operator应用于字符串,这当然会失败:
>>> 'aaa' | 'bbb'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for |: 'str' and 'str'
相反,您可以使用str.join()
:
p = re.compile(r"|".join([A, B]))
演示:
>>> A = 'aaa'
>>> B = 'bbb'
>>> r"|".join([A, B])
'aaa|bbb'
并且,请确保您信任A
和B
的来源(谨防Regex injection attacks),或/和/ escape。