MEMONICA

MEMONICA

RPAやプログラミングなどの自分用技術メモブログです。

【Blue Prism】Tips

Blue Prismの小ネタを書きます。

四捨五入

Blue PrismのRound()は銀行丸めです。

Round(Number, Places)  Places桁目で銀行丸め

小数点以下第N桁目が奇数 → 5未満は切り捨て(それ以外は切り上げ)

小数点以下第N桁目が偶数 5以下は切り捨て(それ以外は切り上げ)

例) N=1

・小数点以下第1桁目が奇数 → 実質四捨五入

Round(1.14, 1)  →  1.1

Round(1.15, 1)  →  1.2

・小数点以下第1桁目が偶数 → 5以下は切り捨て

Round(1.25, 1)  →  1.2

Round(1.26, 1)  →  1.3

そのため、四捨五入をする場合は、四捨五入する桁に5を足した数字をRndDn()で切り捨てます。

RndDn(Number, Places)  Places桁目で切り捨て

RndDn(1.24+0.05, 1)  →  1.2

 1.24 + 0.05 = 1.29のため、切り捨てると1.2

 RndDn(1.25+0.05, 1)  →  1.3

1.25 + 0.05 = 1.3のため、切り捨てても1.3

四捨五入になっている。

整数の四捨五入

例) 1240000を5桁目で四捨五入

RndDn(124000/10000+0.5, 0)*10000  →  120000

① 四捨五入したい桁数で割る

➁ 0.5を足した値をRndDn()で切り捨てる

③ 最初に割った桁数をかけ直す

 

1250000の場合、四捨五入すると130000に切り上がります。

RndDn(125000/10000+0.5, 0)*10000  →  130000

正規表現

Blue Prismで正規表現を扱うオブジェクトには、Utility - Strings、AVO.Regexがあります。AVO.RegexはDXからダウンロード可能です。

https://digitalexchange.blueprism.com/dx/entry/3593/solution/avoregex

Utility - Strings

Utility - Stringsで正規表現を扱うオブジェクトは2つあります。

・Extract Regex Value

・Test Regex Match

まず、正規表現の名前付きキャプチャについて記載します。

正規表現の名前付きキャプチャは、マッチしたテキストの一部分に名前を付けて抽出する機能で、Utility - Strings > Extract Regex Valueを使用します。

Extract Regex Value

f:id:zamdin:20200830201925p:plain

Regex Pattern (?<name>pattern)という形式で名前付きキャプチャを指定。
name:名前付きキャプチャの名前部分
pattern:マッチさせる正規表現
Target String 抽出対象の文字列
Named Values "Name"フィールドと"Value"フィールドの2つのフィールドのみで
構成されたコレクションを指定。Name列に名前付きキャプチャし
たいパターンの名前を1行ずつ並べ、Value列は空欄にする。

f:id:zamdin:20200830202148p:plain

Outputsには、名前付きキャプチャの結果が格納されたコレクションが返る。InputsのNamed Valuesで指定したコレクションをそのまま使うことが多いです。

Named Values コレクション

f:id:zamdin:20200830182936p:plain

f:id:zamdin:20200830202024p:plain

f:id:zamdin:20200830202041p:plain

"(?<数量>\d*)個(?<金額>\d*)円"

のように、2つの名前付きキャプチャを指定したい場合、Named ValuesコレクションのInitial Valuesにも、Nameフィールドに"数量"と"金額"の2つの行を設定しておきます。

"りんご1個120円、みかん1個80円"のように2箇所マッチする文字列を指定したとしても、抽出されるのは最初にマッチした1箇所のみとなります。みかんにもマッチするには、さらに数量と金額の行を増やし、パターンも追加する必要があります。

Test Regex Match

マッチ箇所があるかどうかを、True、Falseで判定します。

f:id:zamdin:20200904201118p:plain

f:id:zamdin:20200904201241p:plain

AVO.Regex

 AVO.Regexオブジェクトで使える機能には以下の5つがあります。

f:id:zamdin:20200830210618p:plain

 Escape Text For Use In Regex

エスケープ文字¥をエスケープします。

f:id:zamdin:20200901233019p:plain

f:id:zamdin:20200904194312p:plain

Extract All Matches As Colletion

マッチ部分全てを抽出し、コレクションに出力します。

f:id:zamdin:20200904194758p:plain

f:id:zamdin:20200904194533p:plain

Extract First Match As Text

最初にマッチしたテキストを抽出します。名前付きキャプチャを使用できます。

f:id:zamdin:20200904195204p:plain

f:id:zamdin:20200904195224p:plain

Regex Replace

正規表現でマッチした箇所を、指定した文字に置き換えます。いくつか使い方があります。

1.マッチした箇所を全て置き換える

f:id:zamdin:20200831210536p:plain

f:id:zamdin:20200901232155p:plain

Regex Pattern 正規表現パターン
Text To Do Replacement On 置換対象の文字列
Replacement Text 置換文字列

2.プレースホルダ

f:id:zamdin:20200831210216p:plain

f:id:zamdin:20200901232050p:plain

Regex Patternの()でキャプチャした文字列は、Replacement Textで$1~$99を使って参照できます。

上記例では、$1に"マッチ文字列の"120円"が格納されます。$1 = 120円

注意したいのが、マッチした順番に$1、$2、$3…と格納されるのではなく、()グループごとに割り振られている点です。

f:id:zamdin:20200831215522p:plain

f:id:zamdin:20200901231802p:plain
上記例だと、$1 = (\D*)であり、「りんご」「、ぶどう」「、みかん」にそれぞれマッチするため、Replacement Textに"$1"を指定すると「りんご、ぶどう、みかん」となります。

3.名前付きキャプチャ

Utility - Strings > Extract Regex Valueで使用した名前付きキャプチャも使えます。

f:id:zamdin:20200901085406p:plain

f:id:zamdin:20200901231716p:plain

Regex Pattern の値で名前付きキャプチャ?<name>を指定し、Replacement Textでマッチした値を参照するには、${name} とします。

 

Tipsは随時更新していきます。