Power Automate for Desktop: 複数行を対象とする正規表現

メールの中から二段階認証のコードを取り出したいと思いました。メール本文は次のような内容です。

表示された画面の確認コード入力欄に下記の数字を半角で入力してください。
確認コード:573
※上記確認コードの有効期限は30分です。30分経過した場合は無効となりますのでご注意ください。
単純に正規表現で、「確認コード:\d*」としても取得はできるのですが、より確実に取得するため、行頭が「確」で始まり、行末が数値で終わる部分を取得したいと思いました。

Power Automate for Desktopの正規表現は .NET を利用しているという事です。そのため、詳細については、次のリファレンスが参考になるでしょう。

.NET の正規表現 Microsoft Lern

そちらを見ると、複数行を扱うには、Regex.Matchesメソッドに Multiline オプションを指定するか、正規表現にインラインオプションとして埋め込めば良いようです。

正規表現のオプション

「テキストの解析」アクションには正規表現に対するオプションがないので必然的にインラインオプション「m」を使用することになります。(複数行オプションをスイッチで指定できるようにしてほしい)

以下は、複数行指定した場合のサンプルです。


フローの全体


検索対象の設定

「テキストの解析」アクションの「検索するテキスト」に (?m:^確認コード:\d*\r$) を指定します。?m: がインラインオプション Multilnie。^は行頭、\r$ は行末にマッチします。

もちろん「正規表現である」はオンにします。

検索結果はMatch変数に格納されるので、そちらを参照します。数値だけ取り出すため、スライスでMatchからインデックス6より後を取り出しています。

実行結果







コメント

アクセス数の多い投稿

セキュリティ対策ソフトのノートンが詐欺ソフトまがいになってしまってショック

ZIPファイルを開こうとすると、展開を完了できません、と言われる

Excel 2019 クエリが原因で日本語入力の一文字目が勝手に確定する

Excelのテーブルに行や列を挿入する際のエラー

オカムラ家具のOAチェアー、コンテッサを分解清掃

突然滅茶苦茶遅くなったPCがWindows Updateのキャッシュクリアで復活

ChatGPTが日本語からVBAのコードを生成できてたまげる

Windows セキュリティーのビックリマークが消えない

Power Automate Desktopでブラウザでダウンロードしたファイルを処理する

Excel VBAからODBCを使ってデータを簡単に取得する