将标志作为参数传递给re.compile
我想根据下面类似的逻辑,把一些标志传递给re.compile函数。我在想这样做是否可行。
flags = ""
if multiline:
flags = 're.M'
if dotall:
flags = flags + '|re.S'
if verbose:
flags = flags + '|re.X'
if ignorecase:
flags = flags + '|re.I'
if uni_code:
flags = flags + '|re.U'
regex = re.compile(r'Test Pattern', flags)
1 个回答
28
re
的标志其实就是一些数字。所以,我们需要用二进制的“或”运算把它们结合起来,就像这样
flags = 0
if multiline:
flags = re.M
if dotall:
flags |= re.S
if verbose:
flags |= re.X
if ignorecase:
flags |= re.I
if uni_code:
flags |= re.U
regex = re.compile(r'Test Pattern', flags)