次のようないくつかのOracleコマンドのパーサーを作成しています
LOAD DATA
INFILE /DD/DATEN
TRUNCATE
PRESERVE BLANKS
INTO TABLE aaa.bbb
( some parameters... )
コマンド全体に一致する正規表現を既に作成しました。入力ファイルの名前を取得する方法を探しています (ここでは「/DD/DATEN」など)。私の問題は、次の正規表現を使用すると、最初のグループ (「N」) の最後の文字のみが返されることです。
^\s*LOAD DATA\s*INFILE\s*(\w|\\|/)+\s*$
何か案は?よろしくお願いします
編集: @HamZa の質問に続いて、Oracle LOAD DATA INFILE コマンドを解析するための正規表現全体を次に示します (簡略化されています)。
^\s*LOAD DATA\s*INFILE\s*((?:\w|\\|/)+)\s*((?:TRUNCATE|PRESERVE BLANKS)\s*){0,2}\s*INTO TABLE\s*((?:\w|\.)+)\s*\(\s*((\w+)\s*POSITION\s*\(\s*\d+\s*\:\s*\d+\s*\)\s*((DATE\s*\(\s*(\d+)\s*\)\s*\"YYYY-MM-DD\")|(INTEGER EXTERNAL)|(CHAR\s*\(\s*(\d+)\s*\)))\s*\,{0,1}\s*)+\)\s*$