簡體   English   中英

如何讓 PLY 忽略正則表達式的大小寫?

[英]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 INTOInsert Intoinsert intoiNsErT 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM