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より後を取り出しています。
実行結果
コメント
コメントを投稿