python中关于或的正则表达式

时间:2016-07-01 00:40:34

标签: python regex python-2.7

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

A = 'aaa'
B = 'bbb'
p = re.compile(A|B)

但这不起作用。如何重写这个以便使用变量(并且它可以工作)?

1 个答案:

答案 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'

并且,请确保您信任AB的来源(谨防Regex injection attacks),或/和/ escape