python中的正则表达式关于或

python中的正则表达式关于或,python,regex,python-2.7,Python,Regex,Python 2.7,我知道p=re.compile('aaa | bbb')可以工作,但我想用变量重写p=re.compile('aaa | bbb'),比如 A = 'aaa' B = 'bbb' p = re.compile(A|B) 但这不起作用。我如何重写它,以便使用变量(并且它可以工作) p=re.compile(A | B) 您没有正确执行字符串连接。您所做的是将应用于字符串,当然,这会失败: >>> 'aaa' | 'bbb' Traceback (most recent call

我知道
p=re.compile('aaa | bbb')
可以工作,但我想用变量重写
p=re.compile('aaa | bbb')
,比如

A = 'aaa'
B = 'bbb'
p = re.compile(A|B)
但这不起作用。我如何重写它,以便使用变量(并且它可以工作)

p=re.compile(A | B)

您没有正确执行字符串连接。您所做的是将应用于字符串,当然,这会失败:

>>> 'aaa' | 'bbb'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for |: 'str' and 'str'
演示:


并且,确保您信任
A
B
(小心)的源代码,或者/并且正确地信任它们。

Python已经提供了一个函数来转义它们,即。因此,要对任意一组文字字符串进行替换,只需执行以下操作:
r'|'。join(map(re.escape,literals_to_alternate_on))
p = re.compile(r"|".join([A, B])) 
>>> A = 'aaa'
>>> B = 'bbb' 
>>> r"|".join([A, B])
'aaa|bbb'