HAKADORI RPA実践

SynchRoid 正規表現の基本と使用事例のご紹介

2024.05.29 水

こんにちは!
事務職出身RPAエンジニアのMです。

今回はSynchRoidの正規表現を使用した「パターン」の活用例を2回にわたってご紹介しようと思います。
私がSynchRoidの開発を勉強し始めた頃、特に苦労したがこの正規表現の記述方法や使い方でした。
事務職でSynchRoidの開発に携わっている方は、正規表現に苦手意識を持たれている方も多いのではないでしょうか。
そんな方に向けて、今回は正規表現の基本的な解説とすぐに使えるSynchRoidのパターン例、そして次回は法人向け生成AI「法人GAI」と組み合わせた活用事例をお届けします。
SynchRoid のベースとなっているBizRobo! にも共通する解説になりますので、BizRobo! を使用している方にも参考にしていただければと思います。

※この記事のロボット作成で使用しているSynchRoidのバージョンは ライトパック 11.4.0.3 です。

正規表現の基本について

正規表現は、文字列の検索、置換、データの抽出などに使われる、「パターンを見つけて置き換える」パターンマッチングの一種です。
特にファイルやデータの処理において重宝するのでSynchRoidでも使用場面が多く、使いこなせるようになるととても便利な表現方法です。
ここでは、正規表現の基礎を簡単に解説し、事務作業で役立つ基本的なパターンをいくつか紹介します。

1.正規表現とは?

正規表現を端的に表すと「文字列のパターンを記述するための言語」です。
例えば、「任意の数字が3回続く文字列」や「拡張子が.xlsxで終わるファイル名」など、特定のルールがある文字列をパターン化し、特殊記号を使って表現します。

2.代表的な特殊記号とパターン

よく使用する代表的な特殊記号とパターンを表にまとめました。

<特殊記号>

特殊記号 説明 一致する文字の例
. 任意の1文字。 a, あ, 1, /
\d 任意の十進数の半角数字。 0, 1, 2, 3,…9
<繰り返しの特殊記号>

特殊記号 説明
* 直前の文字の0回以上の繰り返し。
{m,n} 直前の文字のm回以上、n回以下の繰り返し。
<パターン>

パターン 説明 一致する文字列の例
.* 任意のテキスト。 abc, 123, あいう,「」(空のテキスト)
[abc] a、b、cいずれかの一文字と
一致する。
a, b, c
[a-z] aからzの任意の一文字と一致する。 a, b, c,…z
^abc abcから始まる文字列と一致する。 abcdef, abc123, abcより
abc$ abcで終わる文字列と一致する。 efdabc, 123abc, xとabc
<サブパターン>
(  )を使ってパターンをグループとして整理することができます。

パターン 説明 一致する文字列の例
(abc)* abcの0回以上。 abc, abcabc, abcabcabc
(abc)(.*) abcと任意の文字列
(「」空のテキストも含む)
abc, abcabc, abcdef

※さらに詳しい内容は公式サイトをご参照ください。
https://docshield.tungstenautomation.com/RPA/ja_JA/11.4.0-vcsft2fhaw/help/rpa_help/help_main/designstudio/c_patternsds.html

3.SynchRoidでの使用場面について

SynchRoidでの正規表現の代表的な使用場面はコンバータ等で変数の操作を行うときです。
例えば、長いファイルパスからファイル名を抽出したいときや、文章からパターンが同じ文字列を抽出したいときなどに使用します。
バージョン11.1以降ではDAのワークフロー上で正規表現を使用することが可能になり、指定の文字列が含まれるコンポーネントを抽出したい場面等でとても重宝しています。

ロボット作成時のパターン記述サンプル例

ここでは実際の開発で使用頻度の高い正規表現の活用例をみていきたいと思います。

例1.ファイルフルパスからフォルダ名とファイル名を抽出する

この正規表現が一番使う場面の多い正規表現かもしれません。
SynchRoidでファイルを扱う際、長いファイルフルパスからフォルダ名やファイル名だけを抽出したいときに使用する正規表現です。
今回は変数「ファイルフルパス」から変数の変換ステップを使用し、「フォルダ名」と「ファイル名」の2つの変数を設定する方法をお伝えします。

 1.最初に変数を準備します。

ファイルフルパスを格納した変数「ファイルフルパス」のほか、抽出した「フォルダ名」と「ファイル名」を格納する変数を作成しておきます。

変数名 デフォルト値
ファイルフルパス C:\Users\Documents\MyRobots\Project_001\2024年4月_月次ファイル.xlsx
フォルダ名 (空白)
ファイル名 (空白)

1_【例1】変数ファイルフルパスの設定

 2.まずフォルダ名を抽出します。

変数の変換ステップで変数「ファイルフルパス」と格納先の変数「フォルダ名」を選択します。

2_【例1】変数の変換ステップを選択

3_【例1】変数ファイルフルパスとフォルダ名を設定

 3.「+」をクリックし、抽出から「高度な抽出」を選択します。

5_【例1】高度な抽出を選択

 4.パターン(正規表現)とエクスプレッションを入力します。

フォルダ名を抽出するパターンとエクスプレッションの組み合わせは以下です。
 【パターン】(.*)\\(.*)\\(.*)
 【エクスプレッション】$2
このパターンは「\(バックスラッシュ)」で区切られた3つの任意のテキストグループを表しています。
「(.*)」は任意のテキストのグループを意味します。
「\(バックスラッシュ)」は特殊文字なので、通常の文字として使用するときは「\(バックスラッシュ)」を追加して使用します。
エクスプレッション「$2」で2番目のグループを指定しています。
これにより【「\(バックスラッシュ)」で区切られた後ろから2つ目のテキストグループ】を抽出することになります。
パターン入力欄の下にある「編集」ボタンをクリックし、パターンエディタを開いて確認してみましょう。
6_【例1】パターンエディタ

上記のパターンを入力すると、フォルダ名は「$2」のサブパターンに一致します。

7_【例1】フォルダ名を抽出

これでファイルが格納されているフォルダ名を抽出することができました。
続けて変数「ファイル名」も手順2と手順3の設定まで進めます。

8_【例1】変数ファイル名を設定

ファイル名を抽出するパターンとエクスプレッションの組み合わせは以下です。
 【パターン】(.*)\\(.*)\.xlsx
 【エクスプレッション】$2
このパターンでは拡張子「.xlsx」を除くファイル名を抽出しています。
「.(ピリオド)」は特殊記号としても使用するため、ピリオドとして使いたいときは直前に「\(バックスラッシュ)」を追加します。
拡張子を含めたい場合のパターンは「(.*)\\(.*)」となり、拡張子を任意のテキストグループ「(.*)」に含めて抽出します。

9_【例1】ファイル名を抽出

作成した変数の変換ステップを実行し、正しく抽出ができているか確認します。

10_【例1】変数の変換ステップ

11_【例1】変数フォルダ名抽出完了

12_【例1】変数ファイル名抽出完了

例2.ファイル名に指定の文字が含まれるファイルのみループする

任意のフォルダに格納されているファイルのうち、共通点のあるファイルのみが作業対象となるようなときには「ファイル繰り返し」ステップでパターンを使用します。
ここでは、作業対象のフォルダ変数「作業フォルダ」からファイル名に「月次ファイル」が含まれているExcelファイルもしくはPDFファイルだけをループする設定を行います。

 1.変数を準備します。

作業対象フォルダのパスを格納した変数「作業フォルダ」とファイル名を抽出する変数「ファイル名」を作成します。

変数名 デフォルト値
作業フォルダ C:\Users\Documents\MyRobots\Project_001
ファイル名 (空白)
 2.「ファイル繰り返し」ステップを選択し、ディレクトリ名に変数「作業フォルダ」を
 設定します。

13_【例2】変数作業フォルダを設定

 3.ファイル名のパターン(正規表現)を入力します。

【パターン】.*月次ファイル.*\.(xlsx|pdf)
特殊文字「*」は「.(任意の一文字)」の0回以上の繰り返しを表しているので、このパターンではファイル名に含まれる文字列「月次ファイル」の前後に文字がある場合もない場合もマッチします。
また特殊文字「 | 」は複数条件を示すことができる特殊文字です。
「(xlsx|pdf)」は拡張子「xlsx」または「pdf」のファイルと一致することを表しています。

この正規表現では下記の画像の赤枠で囲んだファイル全てがループの対象となります。
14_【例2】マッチするファイル

まとめ

今回は正規表現の基本とSynchRoidでの使用例について解説しました。
今日ご紹介した以外にも、郵便番号や電話番号を抽出して正しく入力されているか確認を行う場面や、Webサイトに指定の文字列が含まれているかどうかを確認する時など、正規表現を活用できる場面は多岐にわたります。
記述方法が難しく感じるところもあるかもしれませんが、使いこなせるようになると効率的に開発が進められるのでぜひ活用していきたいですね!

次回は正規表現と法人向け生成AI「法人GAI」を組み合せて活用する事例をご紹介する予定です。
正規表現も含め、具体的な開発アドバイスが欲しい方はぜひタクトシステムのRPA導入支援サービス「RoboSupo(ロボサポ)」をご検討ください。
伴走型サポートをコンセプトにした「RoboSupo」では皆さまのロボット開発を手厚くサポートします。
ぜひタクトシステムまでお気軽にご相談ください。

-HAKADORI, RPA実践