我是新來的「LPEG」和「重」的Lua的模塊,目前我想寫基於以下規則的模式:區分大小寫的匹配
- 比賽以「gv _ $/gv $/v $/v _ $/x $/xv $/dba_/all_/cdb_」開頭並且前綴「SYS。%s *」或「PUBLIC。%s *」的字符串爲可選
- 的字符串不應當遵循字母,即,該模式將不匹配「XSYS.DBA_OBJECTS」,因爲它遵循「X」
- 的模式是不區分大小寫
例如,下面的字符串應該匹配的模式:
,sys.dba_objects, --should return "sys.dba_objects"
SyS.Dba_OBJECTS
cdb_objects
dba_hist_snapshot) --should return "dba_hist_snapshot"
目前我的模式是下面這隻能滿足非字母數字+字符串大寫:
p=re.compile[[
pattern <- %W {owner* name}
owner <- 'SYS.'/ 'PUBLIC.'
name <- {prefix %a%a (%w/"_"/"$"/"#")+}
prefix <- "GV_$"/"GV$"/"V_$"/"V$"/"DBA_"/"ALL_"/"CDB_"
]]
print(p:match(",SYS.DBA_OBJECTS"))
我的問題是:
- 如何實現不區分大小寫的匹配?有一些關於解決方案的主題,但我太新瞭解
- 如何正確返回匹配的字符串,而不是也必須加上%W?例如Java中的「(?= ...)」
如果您能提供模式或相關功能,請高度讚賞。
謝謝,這真的很酷。 – Tyler