将标志作为参数传递给re.compile

13

我想根据类似以下逻辑的条件将某些标志传递给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 标记只是数字,因此我们需要像这样对它们进行二进制 OR 运算。

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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接