はじめに
Blue Prism で、一定の書式に従った文字列をパースする際に、正規表現を使いたい場面があり、「名前付きキャプチャ」を利用する方法を調べてみました。
「名前付きキャプチャ」とは、例えば Python では「名前つきグループ」と呼ばれているもので、下記のように名前を指定した「マッチ部分」の文字列を取り出して利用できるようにするものです。
>>> m = re.match(r'(?P<first>\w+) (?P<last>\w+)', 'Jane Doe')
>>> m.groupdict()
{'first': 'Jane', 'last': 'Doe'}
Utility - Strings::Extract Regex Values の使い方を調べる
インストールするとついてくる Utility 系のVBO に、「Utility - Strings」があり、その中のアクションの「Extract Regex Values」が名前的にも使えそうです。
VBO のマニュアルをみてみます。

なるほど、わからん。。。
仕方がないので、Utility - Strings VBO の本体をみてみると、オブジェクトに用例としてデータアイテムの初期値が入っており、テスト実行して動きが確認できるようになっています。これは助かりますね!

使い方のポイントは、引数の コレクションNamed Values
にあります。
列名に Name
Value
をもつコレクションを準備し、その Name
列に、正規表現で設定した名前付きキャプチャの「名前」を指定します。
用例での正規表現は下記の通りです。設定されている名前付きキャプチャは Lower
と Upper
です。
(?<Lower>\d+)\s*(-|to)\s*(?<Upper>\d+)
Lower
と Upper
を Name
列に設定します。

実行すると、結果が Value
列に入る仕組みになっているようです。
テスト対象の文字列は、下記の通りなので、意図通りのキャプチャができています。
100-200

これで使い方がわかりました。
Utility - Strings::Extract Regex Values を使ってみる
試しに使ってみます。
テスト対象の文字列を下記のように設定し、角括弧の中身と、角括弧に続く文字列をそれぞれ別にキャプチャしてみます。
[場所] 東京都品川区西五反田
使うパターン文字列は下記の通りです。角括弧の中身を Tag
、角括弧に続く文字列を Content
としてキャプチャしようとしています。
^\[(?<Tag>\w+)\]\s*(?<Content>.+)$
ポイントとなるコレクション Named Values Input
は下記のように Name
列、Value
列を設定し、Name
列の初期値に、名前付きパターンの Tag
、Content
を設定します。

実行すると、意図通りキャプチャできたことがわかります。

まとめ
VBO のマニュアルをみても使い方がわからない場合も、本体をみると分かることがある!