Lua の「LPeg」および「re」モジュールは初めてです。現在、次のルールに基づいてパターンを記述したいと考えています。
- 「gv_$/gv$/v$/v_$/x$/xv$/dba_/all_/cdb_」で始まる文字列と、接頭辞「SYS.%s*」または「PUBLIC.%s*」に一致します。オプションです
- 文字列は英数字に続くべきではありません。つまり、パターンは「X」に続くため、「XSYS.DBA_OBJECTS」と一致しません。
- パターンは大文字と小文字を区別しません
たとえば、以下の文字列はパターンに一致する必要があります。
,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の「(?=...)」のようなもの
パターンまたは関連する機能を提供していただければ幸いです。