UiPathのReplaceで正規表現を使う方法

Pocket

UiPathは基本的にVB.Netの文法が使えます。
ReplaceアクティビティではVB.Netの正規表現が使えます。

VB.Netの正規表現

VB.Netの正規表現については次のリンク先にあります。

https://msdn.microsoft.com/ja-jp/library/cc427946.aspx

使える記号については次のリンク先にあります。

https://msdn.microsoft.com/ja-jp/library/cc392020.aspx

「.」や「*」など正規表現でおなじみの記号が使えます。

正規表現オプション(いわゆるパターン修飾子)については次のリンク先にあります。

https://msdn.microsoft.com/ja-jp/library/system.text.regularexpressions.regexoptions(v=vs.110).aspx

例えば「IgnoreCase」は大文字小文字の違いを無視します。

Replaceアクティビティ

Replaceアクティビティを使うと文字列の置換を行えます。プロパティは次のようにします。

Inputには元の文字列を指定します。文字列や変数をセットします。
Patternには正規表現パターンを指定します。文字列をセットします。
RegexOptionには正規表現オプションを指定します。
Replacementには置換後の文字列を指定します。
Resultには元の文字列を置換した結果を代入する変数をセットします。

Replaceアクティビティは置換のために使いますが長い文字列から一部分だけを取り出すのにも使えます。

例えば複数行の文字列の中に「yournumber 75984264」というような文字列があり、「75984264」だけを取り出したいとします。

別の例として「xxxxx75984264xxxxx」という文字列から連続する数字だけを取り出すにはPatternに「\D+(\d+)\D+」をセットしReplacementには「$1」をセットします。
「$1」は正規表現パターンの中の括弧に挟まれた部分を表します。括弧が複数あれば「$2」「$3」とします。
「\D+」は数字以外を表すので前後の不要な部分はなくなります。結果的に括弧に挟まれた部分だけが残るというわけです。

元の例に戻ると、複数行の場合、前後の不要な部分を指定するのに、工夫が要ります。
一つは「[\s\S]*」を使う方法です。「\s」がスペース(タブなどを含む)を表します。「\S」がスペース以外を表します。「[\s\S]*」とすると改行を含めたすべての文字列を表します。したがって「[\s\S]*yournumber\s+(\d+)[\s\S]*」とすれば「75984264」だけを取り出せます。
もう一つは、正規表現オプションで「SingleLine」を使う方法です。これは改行を無視するような動作をします。つまり「.*」としても改行を含むすべての文字列を表します。したがって「.*yournumber\s+(\d+).*」とすればよいです。見た目がシンプルで分かりやすくなります。

[ 2018年6月20日 | カテゴリー: デジタル | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報