#概要
UiPathの機能「正規表現ビルダー」を使って、欲しい情報を抽出する方法をまとめました。
#ことの始まり
社内メンバーからの質問から始まりました。
「取得したテキストからメールアドレスだけをうまく取り出す方法ってないかなぁ?」
わたし「たしか正規表現を作りやすくするアクティビティがあった気がするので調べてみますね!」
#どんなアクティビティ?
- 正規表現を用いて該当の文字列の有無を判別する「文字列の一致をチェック」アクティビティ
- 正規表現を用いて該当の文字列を抽出する「一致する文字列を取得」アクティビティ
を設定する場合に「正規表現ビルダー」と呼ばれる正規表現を構築、検証できる画面が表示されます(完全式に設定した正規表現に合致する部分が黄色くハイライトされる)
#サンプルロボット作ってみました
GitHubにサンプルをあげました
#正規表現ビルダーの使い方
今回はプリセットで指定されている「メールアドレス」という正規表現を使用しましたが、他にも「行頭」「行末」「URL」「米国式の日付」など、様々なプリセットのほかにも自分で正規表現を作成することも可能です。
また、テスト用テキストを入力することで、正規表現がきちんと意図した文字列を認識、取得出来ているか確認もできます。
詳細は公式ガイド(RegEx Builderウィザード)を参照してください。
#各アクティビティを使う上で気をつけること
##「文字列の一致をチェック」アクティビティの注意
###確認結果はBoolean型で出力される
出力する変数の型はBoolean型のため、チェック時にいくつ該当の文字列が含まれているかまでは確認できません
※確認したい場合は「一致する文字列を取得」アクティビティで取得した値で判別(取得した値.Length)した方がよいかと…
##「一致する文字列を取得」アクティビティの注意
###出力される変数の型はIEnumerable<Match>型
あまり見慣れない型ですが、正規表現で合致した結果が配列として保持されます。
出力変数名を格納するボックスでCtrl + Kを押すことで自動的に適切な型の変数をその場で作成できるので、
その方法で対応するとよいと思います
なお、配列なので「繰り返し (コレクションの各要素)」アクティビティを使って繰り返し処理も行えます
※プロパティよりTypeArgumentをSystem.Text.RegularExpressions.Matchに変更するのを忘れないで!
#最後に
おすすめの正規表現について学べるサイトがあれば教えてください・・・