ply lex 标记背后的逻辑是什么?

What is the logic behind the ply lex tokens?

def t_NUMBER_LITERAL(t):
    r'\d+'
    t.value = int( t.value )
    return t

在这里,如果我很了解,它将把所有数字标记转换为 int,因为 r'\d+' 做到了。 我怎么能 select 只有变量、字符串(垂直双引号内的任意数量的字符)注释(接受但忽略大括号 { } 之间的任何内容)等(我想要的任何特殊内容)? 为什么 r'\d+' select 只有 munbers?

PLY 的词法分析器获取文档字符串中的正则表达式并使用它来匹配标记。因此 t_NUMBER_LITERAL 函数仅在仅包含数字的子字符串上调用,因为这是正则表达式 \d+ 匹配的内容。具体来说 \d 匹配任何数字,而 + 量词使其匹配一个或多个数字的序列。