5

次のようないくつかの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*$

正規表現の視覚化

Debuggex デモ

何か案は?よろしくお願いします

編集: @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*$

正規表現の視覚化

Debuggex デモ

4

2 に答える 2

2

テストしていませんが...

^\s*LOAD DATA\s*INFILE\s*(\S+)\s*$
于 2013-11-10T19:37:57.010 に答える