正規表現とは文字列で、その中に含まれる一部の文字が照合パターンに関する特別な意味を持ちます。このセクションでは、HTTPS で正規表現を使用する方法に関する基本的なガイドラインを示します。
正規表現を使用すると、ファイル名およびディレクトリ名に対するパターンを指定できます。正規表現は「取得」処理 (受信、つまり転送元) に使用するのに対し、名前パターンは「出力」処理 (送信、つまり転送先) に使用します。
BatchFTP、Batch FTPOverSSL、BatchSFTP、BatchLocalFile、および BatchInbound の各 OTD では、正規表現を使用できます。たとえば、特定の拡張子を持つすべてのファイルにアクセスできます。
正規表現は次のように機能します。
ディレクトリ名またはファイル名は、次のいずれかとして定義できます。
実際のファイル名 (常に使用可)
名前パターン (「出力」処理のすべての名前、および取得処理の転送前/転送後名)
正規表現 (「取得」処理のターゲット名)
正規表現と名前パターンの違いは、次のとおりです。
正規表現は、FTP サーバーまたはローカルファイルシステム上の既存の名前と照合するために使用されます。
名前パターンは、パターン内の特殊文字を置き換えることで名前を作成するために使用されます。
特殊文字を使用した名前パターンについては、「バッチアダプタでの名前パターンの使用法」を参照してください。
たとえば、.*\.dat$ という拡張子を指定できます。すると、get() メソッドが呼び出されるごとに、アダプタは、.dat 拡張子を持つ次のファイルを取得します。次に、アダプタは、各ファイルを OTD の Payload ノードに取り出し、現在アクセスしているファイルの名前で作業ファイル名の属性を更新します。
別の例としては、ファイル照合パターン data\.00[1-9] を使用して、ファイル data.001、data.002 などを取得できます。どの場合も「.」はエスケープされます。これは、正規表現の構文と一貫しています。また、xyzdata.001 および xyz.data.001 に一致します。これは、「data」の前が一切除外されないためです。「data」を照合パターンの開始とするためには、^data\.00[1-9] または \A data\.00[1-9] を使用します。
正規表現の使用は拡張機能であり、慎重に実装してください。不適切な形式の正規表現は、想定外のデータをもたらしたり、データを損失することさえあります。正規表現を使用する前に、その構文と構築について明確に理解してください。正規表現の設定は、本稼働環境に移行する前に、十分テストすることをお勧めします。
FTP またはローカルファイル名の正規表現は、さまざまな方法で入力できます。たとえば、*\.dat$ や ^xyz.*\.dat$ などです。最初の例は、拡張子 .dat を持つすべてのファイルを示します。2 番目の例は、拡張子が .dat で名前が xyz で始まるすべてのファイル名を示します。
もう 1 つの例として、file[0-9]\.dat も可能です。この表現は、file0.dat、file1.dat、file2.dat などから file9.dat までを指定します。また、これは xyz.file0.dat、xyz.file1.dat などに一致します。このタイプの表現は、「file」の前の一切を除外しません。「file」の前のすべての文字を除外するには (「file」から始まることを条件とするには) ^file[0-9].dat または \Afile[0-9].dat を使用します。
これらのタイプの正規表現パターンを取得処理に使用できます。
アダプタには、各プロパティーの後に正規表現をオプションとして許可する File Name Is Pattern または Directory Name Is Pattern 設定パラメータが備わっています。この機能を使用して、入力したパターンが正規表現か、またはリテラルに解釈する静的なテキストエントリかどうかを指定できます。
正規表現は、ファイル名に対する部分一致でも解決します。この解決処理は、ファイル名ではなくファイル名の内容を検索します。
ディレクトリ名に正規表現を使用する場合は、特別な考慮が必要です。このセクションでは、これらの制限を説明し、例をいくつか示します。
ディレクトリ名として正規表現を使用する場合、次の制限が適用されます。
ディレクトリルート、ドライブ名、およびディレクトリ区切り文字は、それだけで表現します。つまり、これらの要素のいずれも正規表現として表現しないでください。正規表現として出現することを想定されるのはフォルダ名のみです。
正規表現は、ディレクトリ区切り文字をまたがることはできません。2 つのディレクトリ区切り文字間で正規表現を使用する場合は、完全な 1 つの表現にします。
ディレクトリ区切り文字が正規表現の特殊文字 (” * [ ] ( ) | + { } : . ^ $ ? \") と競合する場合は、ディレクトリパターン内ですべてのディレクトリ区切り文字をエスケープします。バックスラッシュ (\) は、正規表現で他の特殊文字をエスケープするために使用される特殊文字です。Windows プラットフォームの場合、ディレクトリ区切り文字はバックスラッシュであるため、\\ としてエスケープします。
Windows 汎用命名規則 (UNC) の場合、ディレクトリルート (コンピュータ名および共有ルートフォルダ名を含む) はそれだけで表現します。つまり、コンピュータ名および共有ルートフォルダは正規表現として表現しないでください。
ディレクトリ区切り文字はプラットフォームに依存します。次に例を示します。
Windows プラットフォームの場合、ディレクトリパスは次のパターンに従います。
drive:\\regexp1\\regexp2\\regexp3 ... |
Windows UNC 指定の場合、ディレクトリパスは次のパターンに従います。
\\\\machineName\\shared_folder\\regexp1\\regexp2\\regexp3 ... |
マウントされたディレクトリを含む UNIX プラットフォームの場合、ディレクトリパスは次のパターンに従います。
/regexp1/regexp2/regexp3 ... |
Windows:
c:\\$\\^client\\collab\D\\ ... |
表現 \D は、数字以外の任意の文字を示します。
d:\\a.b\\c.d\\e.f\\g.h\\[0-9]\\ ... |
シンボル「.」は任意の文字を意味します。
Windows の UNC 指定:
\\\\My_Machine\\public\\xyz$\\^abc |
Windows の UNC 指定のプレフィックスは \\ です。エスケープすると、\\\\ になります。
UNIX:
/abc\d/def/ghi/ ... |
表現 \d は、任意の数字を意味します。
/^PRE[0-9]{5}\.dat$/ ... |
この表現は、PRE で始まり、5 桁の数字が続いて、.dat 拡張子を使用することを意味します。シンボル \. は、任意の文字としてではなく、実際の文字 (ピリオド) として解釈することを意味します。したがって、PRE12345.dat は一致しますが、PRE123456dat は一致しません。