如何在字符串表示法中使用带有 python 正则表达式的标志?

How to use flags with python's regular expressions in string notation?

我需要将 PLY 用作解析器,而 PLY 会强制您在标记定义内的字符串 ntoation 中编写正则表达式。例如(来自docs):

# A regular expression rule with some action code
def t_NUMBER(t):
    r'\d+'
    t.value = int(t.value)
    return t

# Define a rule so we can track line numbers
def t_newline(t):
    r'\n+'
    t.lexer.lineno += len(t.value)

我想知道如何使用这种表示法编写更复杂的正则表达式,特别是如何使用 RE 的 IGNORECASE 标志。

要启用忽略大小写标志,您可以在正则表达式的开头使用(?i)。例如:

def t_id(t):
  r'(?i)[a-z_][a-z0-9_]+'