【Bizrobo】DSの高度な抽出で自由に必要な値を抽出する方法

■高度な抽出とは?
基本、コンバータを使って「抽出」⇒「高度な抽出」で設定し、ある変数の一部の箇所を正規表現を使って抽出していきます。
■事前準備
あらかじめ変数に「2020-5-28売上実績ファイル.xlsx」という文字列を入れています。この文字列の一部を高度な抽出を使って、自由に抽出していきます。

■パターンとは?
パターンには、デフォルトで「.*」が入っています。「.*」は任意の文字列で、ワイルドカードの役割です。
例えば、ポーカーいうところのジョーカーのような存在で、どんな数字にも化けることができます。
今回でいうと、「2020-5-28売上実績ファイル.xlsx」という文字列に化けています。
もう一つ例を出しておくと、「.*売上実績ファイル.xlsx」の場合、「2020-5-28」の代わりになっています。

「.*」は、正規表現の一つで、そのほかにもたくさんあります。
パターンでは、正規表現を使って、今回の文字列を表現することができます。
パターンの「シンボル」ボタンをクリックすれば、正規表現が出てきます。
よく使うのは、「.*」以外に「\d」「\w」「{}」です。
■よく使う正規表現の説明
「\d」は、任意の数字の意味で、「\d\d\d\d-\d-\d\d売上実績ファイル.xlsx」と表現できます。

「\w」は、任意の英数字の意味で、「\d\d\d\d-\d-\d\d売上実績ファイル.\w\w\w\w」

「{}」は、上記のように「\d」「\w」など繰り返し使っている正規表現を1つにまとめることができます。「\d{4}-\d-\d{2}売上実績ファイル.\w{4}」といった感じになります。

■エクスプレッションを出力とは?
下の画像の青色の部分です。
エクスプレッションを出力とは、簡単に言うと今回どこを抽出しますか?ということだと思ってください。
先ほどの例の「.*売上実績ファイル.xlsx」の抽出したい部分に「()」ではさみます。
「2020-5-28」を抽出したい場合「(.*)売上実績ファイル.xlsx」となります。
エクスプレッションを出力は、デフォルトでは、「$0」となっています。

今回の例でいうと「$1」に書き換えると、「2020-5-28」だけが抽出することができます。

例えば、「(.*)(売上実績)(ファイル).(xlsx)」売上実績をとりたい場合、「$2」
xlsxをとりたい場合、「$4」で、
2020-5-28.xlsxをとりたい場合、「$1 + $4」となります。

■特殊文字が含まれる時の注意点
特殊文字というのは、¥や?、$みたいなやつです。
よく出て来るのは、¥を使ったファイルパスを高度な抽出で、値を抽出したいときです。
例えば、デスクトップにあるファイルだけを抽出したい時です。
「C:\Users\"ユーザー名"\Desktop\入力元.xlsx」がああったとしましょう。
デスクトップに保存してある「入力元.xlsx」だけを抽出したいのですが、
下の画像を見てください。
パターンにちゃんとファイルパスを入力しているのですが、テスト出力に反映されていません。。。

どういうことかというと、ファイルパスの「¥」が特殊文字として認識されているからです。
なので、「¥」マークを文字列だということを明示的に表現してあげる必要があります。
その表現するためには、ファイルパスの「¥」の前に、「¥」をつけてあげます。※ややこしいでしょー(笑)もっとほかの表現方法はなかったんかーと思うんですが、まあ仕方がないです。。。
ということで、このようになります。
「C:\\Users\\"ユーザー名"\\Desktop\\入力元.xlsx」
そうすると、以下の画像のようにテスト出力に値が表示され、ちゃんと認識してくれます。結構、ハマりやすいポイントなんで、気を付けてください☆
