如何让PLY忽略正则表达式的大小写?

2024-10-01 02:25:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个简单的转换器,从sqlinsert语句转换为要与DbUnit一起使用的数据集XML文件。在

我现在的定义是这样的:

def t_INSERT(token):
    r'INSERT\s+INTO'
    return token

现在,我想支持SQL的不区分大小写的命令,例如,接受INSERT INTOInsert Intoinsert into和{}的所有命令。在

我想知道是否有一种方法可以让PLY use re.I忽略这个情况,或者是另一种方法来编写我不熟悉的规则。在


Tags: 文件数据方法命令tokensqlreturn定义
2条回答

可以使用(?)语法将标志注入regexp。尝试'(?i)INSERT\s+INTO',它添加了忽略大小写的标志。在

在内部,lex.py使用re模块进行模式匹配。
如果需要为重新编译()函数,对lex使用reflags选项。例如:

lex.lex(reflags=re.UNICODE)

此信息摘自documentation第4.3和4.20节
在您的例子中,可以将re.IGNORECASE传递给lexer:

^{pr2}$

如果以这种方式传递标志,则代码的可读性更高。在

相关问题 更多 >