Automation Anywhereで文字列置換する際によく使う正規表現


RPAツール「Automation Anywhere」では、String OperationコマンドのReplaceでは正規表現が使える。
このコマンドを使えば1行で色々な操作ができる。

Regular Expressionのチェックボックスをオンにして使おう。

ちなみに、BotStoreにこの手の機能を実装したMetaBotもあるかもしれない。

検証バージョン:
Automation Anywhere Community Edition 11.0.0.0.0

やってみたらできたという話で、ベンダーが正式にサポートしているかというとよく分からんので、そこは自己責任でお願いします。

ファイルパス関連

ファイルのフルパスからファイル名を抽出

1(ドライブ)
置換前:C:\AA Test\String Operation\test.txt
置換後:test.txt

2(ネットワークフォルダ)
置換前:\\10.1.11.111\share\My work\test.txt
置換後:test.txt

コマンド設定

Find: ^.*\\
Replace: (空文字)

ファイルのフルパスからフォルダのパスを抽出

置換前:C:\AA Test\String Operation\test.txt
置換後:C:\AA Test\String Operation

コマンド設定

Find: \\[^\\]+$
Replace: (空文字)

ファイルのパスまたはファイル名にタイムスタンプ等を追加

タイムスタンプとして"_20190101_123456"を追加する

置換前:C:\AA Test\String Operation\test.txt
置換後:C:\AA Test\String Operation\test_20190101_123456.txt

コマンド設定

Find: \.(?=[^\.]+$) #後方からみて最初に出現する.に一致
Replace: vTimeStamp. #vTimeStampはタイムスタンプが格納された変数

ファイルまたはフォルダのパスから親フォルダ名を抽出

置換前:C:\AA Test\String Operation\test.txt
置換後:String Operation

置換前:C:\AA Test\String Operation
置換後:AA Test

コマンド設定

Find: .+\\(?=[^\\]+\\[^\\]+$)|\\[^\\]+$
Replace: (空文字)

ファイルのフルパスまたはファイル名から拡張子なしのファイル名を抽出

1(フルパスから抽出)
置換前:C:\AA Test\String Operation\test-1.01.txt
置換後:test-1.01

2(ファイル名から抽出)
置換前:test-1.01.txt
置換後:test-1.01

コマンド設定

Find: ^.*\\|\.[^\.]+$
Replace: (空文字)

フルパスまたはファイル名から拡張子のみを抽出

1(フルパスから抽出)
置換前:C:\AA Test\String Operation\test-1.01.txt
置換後:txt

2(ファイル名から抽出)
置換前:test-1.01.txt
置換後:txt

コマンド設定

Find: ^.*\.
Replace: (空文字)

日付・時刻関連

yyyy/mm/dd HH:mm:ssyyyymmdd_HHmmss形式に変換

置換前:2020/01/31 12:34:56
置換後:20200131_123456

コマンド設定

Find: (\d{4})/(\d\d)/(\d\d) (\d\d):(\d\d):(\d\d)
Replace: $1$2$3_$4$5$6

yyyy_m_d形式をyyyymmddに変換

Automation Anywhereのシステム変数のmonth、dayは頭にゼロが付かない。if分岐などを使う方法もあるが、行数が長くなる。

置換前:2019_1_1
置換後:20190101

置換前:2019_12_31
置換後:20191231

コマンド設定

1つのコマンドで実現する方法は思いつかなかった。
2回Replaceが必要。

1つ目のReplace
Find: _(?!\d\d)
Replace: _0

2つ目のReplace
Find: _(アンダースコア)
Replace: (空文字)