UiPathで【一致するパターンを置換】を使って文字列を取得する方法

正規表現を使うアクティビティ

UiPathには正規表現を使うアクティビティがいくつかある。

【一致するパターンを置換】
英語名:Replace
正規表現に一致するすべての文字列を他の文字列に置換して返す。

【一致するパターンを探す】
英語名:Matches
正規表現に一致するすべての文字列を返す。

【テキストの一致を確認】
英語名:IsMatch
正規表現に一致するか否かを返す。

文字列を取得する方法

文字列を取得するには【一致するパターンを置換】と【一致するパターンを探す】の二通りが考えられる。

【一致するパターンを置換】を使うときは「パターンあ(パターンい)パターンう」を「$1」に置換する方法を使う。
「$1」はカッコ内のパターンに合致する文字列を返すので「パターンい」の部分が返る。
以前はこれが簡単だった。
しかし【一致するパターンを探す】で「最初の一致」を返すようになったのでこれを使う方が簡単。

【一致するパターンを探す】を使って文字列を取得する方法

基本的な手法は次の通りである。

【一致するパターンを探す】
検索対象のテキスト:元の文字列全体
パターン:取得したい文字列を表す正規表現
最初の一致:取得した文字列(を代入する変数)

使用例

「abc123」から「123」を取得

「abc123」から「数字が続く部分」を探せば「123」を取得できる。

textAll = "abc123"

【一致するパターンを探す】
検索対象のテキスト:textAll
パターン:"\d+"
最初の一致:textMatch

結果
textMatch→123

パターンは正規表現を使う。
「\d」は「数字」の意味で「+」は「前の文字の1文字以上の繰り返し」の意味。
「\d+」とすることで「1文字以上数字」の意味となる。

電話番号を取得

「数字、ハイフン、数字、ハイフン、数字」のような文字列を探せば「06-6012-3456」のような電話番号が取得できる。

textAll =
氏名
坂田三吉
電話
06-6012-3456


【一致するパターンを探す】
検索対象のテキスト:textAll
パターン:"\d+-\d+-\d+"
最初の一致:textMatch

結果
textMatch→06-6012-3456

「\d+-\d+-\d+」とすることで「1文字以上の数字、ハイフン、1文字以上の数字、ハイフン1文字以上の数字」の意味となる。

ただし「2024-12-15」のような日付を拾ってしまうかもしれない。
「^0\d+-\d+-\d+」としてプロパティのパターンのオプションでMultilineをオンにする。
Multilineを使うと各行を別に判定する。
「^」を使うと行の先頭の意味になる。
電話番号は一般に0から始まるので「0\d」とする。

見出しの右にある文字列を取得

「住所:神奈川県横浜市保土ケ谷区」の「住所:」の右にある文字列を探せば「神奈川県横浜市保土ケ谷区」が取得できる。

textAll =
住所:神奈川県横浜市保土ケ谷区
氏名:山田太郎

【一致するパターンを探す】
検索対象のテキスト:textAll
パターン:"(?<=住所:).*"
最初の一致:textMatch

結果
textMatch→神奈川県横浜市保土ケ谷区

「(?<=○○).*」とすると「○○の右にある文字列」という意味になる。

正規表現の基本

正規表現 意味
. 任意の1文字。
* 前の文字の0文字以上の繰り返し。ないかもしれない場合に使う。
+ 前の文字の1文字以上の繰り返し。必ずある場合に使う。
[○-●] ○から●までに該当する1文字。[あ-お]とすると「あ」「い」「う」「え」「お」のいずれか。
[^パターン] パターンに該当しない1文字。
\d 数字。[0-9]としてもよい。
\D 数字以外。[^0-9]としてもよい。
[a-z] 英小文字。
[A-Z] 英大文字。
{△,▲} 前の文字の△文字以上▲文字以下の繰り返し。\d{3,5}ならば数字3文字以上5文字以下。
^ 文字列の先頭。
$ 文字列の末尾。

コメント

タイトルとURLをコピーしました