こんにちは。RPAエキスパートの笹谷です。
WinActorを使ってシナリオを作成しているとき、「【重要】という文字列を含んでいるときで分岐したい」ですとか、「半角の有無で処理を変えたい」といった状況に遭遇する機会があると思います。
このような場合に役に立つのが正規表現を使った条件式です。
正規表現とは
そもそも正規表現とは、アルファベットや数字といった文字列の集合を一つの文字列で表現する方法です。WinActorのみならず、さまざまなアプリケーションやプログラミングにおいて、正規表現を使って文字列をマッチングする動作が行われています。
英語のアルファベットは[A-Za-z]
アラビア数字は[0-9]
正規表現を使うことで、通常の条件式を発展させた、複雑な条件式を表すことができます。WinActorの操作マニュアルで挙げられている正規表現の例は以下の通りです。
^(ABC).*$「ABC」から始まる文字列かどうかを判別します。
*(ABC)$ 「ABC」で終わる文字列かどうかを判別します。
.*(ABC).*$ 「ABC」を含む文字列かどうかを判別します。
^[0-9]+$ 半角数字のみの文字列かどうかを判別します。
^[^0-9]*$ 半角数字以外の文字列かどうかを判別します。
^[A-Za-z]+$ 半角英字のみの文字列かどうかを判別します。
個々の文字の意味についても代表的なものは覚えておくと応用が利きます。
^ 行頭にマッチ
$ 行末にマッチ
(ABC) 1グループとして扱う
[abc] いずれかの文字とマッチ
[^abc] []内に^がある場合、いずれかの文字以外とマッチする
– 範囲を指定
. 任意の文字にマッチ
* 直前の0回以上の繰り返しにマッチ
+ 直前の1回以上の繰り返しにマッチ
例えば、上記で挙げられた
.*(ABC).*$
は、それぞれ文字で説明すると以下の通りになります。
「RPA」という文字列を含む分岐のシナリオ
では実際の画面で正規表現を使う方法について見ていきましょう。先ほどの.*(ABC).*$を使って表現するとこのようになります。
ここで「文字列」という変数に「RPA」という文字列が入っていたらTrue、それ以外ならFalseを返します。
「売上」「月」を含むファイルのみ開くシナリオ
実際のシナリオに正規表現を使っていきたいと思います。
デスクトップ上にある「テストフォルダ」の中に、「売上4月.txt」「売上7月.txt」「売り上げ試算表.txt」の3つのファイルがあります。ここで「売上4月.txt」「売上7月.txt」の2つのファイルを開けたいときのシナリオが上記になります。
ファイルリストを使ってフォルダ内のファイルをリストアップしたのち、繰り返して使うため行数を取得します。その後エミュレーションで一行ずつファイルパスをコピー(Shift+End→Ctrl+C→Pg dn+right)します。クリップボードの値を変数に格納して、変数の条件式を正規表現で判定します。
このように設定することで、ファイルパスの中に「売上」「月」を含むもののみTrueが返ってきます。このように、正規表現を使うことでファイルの名前にばらつきがあっても対応することができます。
いかがだったでしょうか。正規表現は奥が深く、すべてマスターしようとすると時間がかかりますので、最初のうちはなるべくシンプルに考えることが大切です。特に、シナリオをノンプログラマーが管理する場合は、複雑な正規表現を使用しているとメンテナンスできないといった事態も考えられますので、その際は適宜コメントなどで補足することも行いましょう。
WinActorを使うことで、パソコンで行う操作の自動化が可能です。弊社ではWinActor導入の支援サービスを行っております。下記よりご覧ください。
[sc_blogcard url=”https://www.venture-net.co.jp/rpa/win-actor-5steps-point/”]