我正在研究一个简单的翻译器,从SQL INSERT语句到数据集XML文件,与DbUnit一起使用。
我目前的定义如下:
def t_INSERT(token):
r'INSERT\s+INTO'
return token
现在,我想支持SQL的不区分大小写的命令,例如,接受所有INSERT INTO
,Insert Into
,insert into
和iNsErT inTO
同样的事情。< / p>
我想知道是否有办法让PLY使用re.I
以便忽略这种情况,或者另一种方法来编写我不熟悉的规则。
答案 0 :(得分:6)
您可以使用(?)
语法将标志注入到regexp中。试试'(?i)INSERT\s+INTO'
,它会添加标志以忽略大小写。
答案 1 :(得分:0)
在内部,lex.py
使用re
模块进行模式匹配。
如果需要为re.compile()函数提供可选标志,请使用lela的reflags选项。例如:
lex.lex(reflags=re.UNICODE)
此信息摘自documentation第4.3和4.20节
在您的情况下,您可以将re.IGNORECASE传递给词法分析器:
import re
lex.lex(reflags=re.IGNORECASE)