[英]How to get PLY to ignore case of a regular expression?
我正在研究從 SQL INSERT 語句到要與DbUnit一起使用的數據集 XML 文件的簡單轉換器。
我目前的定義是這樣的:
def t_INSERT(token):
r'INSERT\s+INTO'
return token
現在,我想支持 SQL 的不區分大小寫的命令,例如,接受所有INSERT INTO
、 Insert Into
、 insert into
和iNsErT inTO
作為同一件事。
我想知道是否有一種方法可以讓 PLY 使用re.I
以便它忽略大小寫,或者還有另一種替代方法來編寫我不熟悉的規則。
您可以使用(?)
語法將標志注入正則表達式。 嘗試'(?i)INSERT\\s+INTO'
,它添加了忽略大小寫的標志。
在內部, lex.py
使用re
模塊進行模式匹配。
如果您需要為 re.compile() 函數提供可選標志,請使用 lex 的 reflags 選項。 例如:
lex.lex(reflags=re.UNICODE)
此信息摘自文檔第 4.3 和 4.20 節
在您的情況下,您可以將re.IGNORECASE傳遞給詞法分析器:
import re
lex.lex(reflags=re.IGNORECASE)
如果您以這種方式傳遞標志,您的代碼將更具可讀性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.