正規表現を使うアクティビティ
UiPathには正規表現を使うアクティビティがいくつかある。
【一致するパターンを置換】
英語名:Replace
正規表現に一致するすべての文字列を他の文字列に置換して返す。
【一致するパターンを探す】
英語名:Matches
正規表現に一致するすべての文字列を返す。
【テキストの一致を確認】
英語名:IsMatch
正規表現に一致するか否かを返す。
文字列を取得する方法
文字列を取得するには【一致するパターンを置換】と【一致するパターンを探す】の二通りが考えられる。
【一致するパターンを置換】を使うときは「パターンあ(パターンい)パターンう」を「$1」に置換する方法を使う。
「$1」はカッコ内のパターンに合致する文字列を返すので「パターンい」の部分が返る。
以前はこれが簡単だった。
しかし【一致するパターンを探す】で「最初の一致」を返すようになったのでこれを使う方が簡単。
【一致するパターンを探す】を使って文字列を取得する方法
基本的な手法は次の通りである。
【一致するパターンを探す】
検索対象のテキスト:元の文字列全体
パターン:取得したい文字列を表す正規表現
最初の一致:取得した文字列(を代入する変数)
使用例
「abc123」から「123」を取得
「abc123」から「数字が続く部分」を探せば「123」を取得できる。
【一致するパターンを探す】
検索対象のテキスト:textAll
パターン:"\d+"
最初の一致:textMatch
結果
textMatch→123
パターンは正規表現を使う。
「\d」は「数字」の意味で「+」は「前の文字の1文字以上の繰り返し」の意味。
「\d+」とすることで「1文字以上数字」の意味となる。
電話番号を取得
「数字、ハイフン、数字、ハイフン、数字」のような文字列を探せば「06-6012-3456」のような電話番号が取得できる。
氏名
坂田三吉
電話
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
パターン:"(?<=住所:).*"
最初の一致:textMatch
結果
textMatch→神奈川県横浜市保土ケ谷区
「(?<=○○).*」とすると「○○の右にある文字列」という意味になる。
正規表現の基本
正規表現 | 意味 |
---|---|
. | 任意の1文字。 |
* | 前の文字の0文字以上の繰り返し。ないかもしれない場合に使う。 |
+ | 前の文字の1文字以上の繰り返し。必ずある場合に使う。 |
[○-●] | ○から●までに該当する1文字。[あ-お]とすると「あ」「い」「う」「え」「お」のいずれか。 |
[^パターン] | パターンに該当しない1文字。 |
\d | 数字。[0-9]としてもよい。 |
\D | 数字以外。[^0-9]としてもよい。 |
[a-z] | 英小文字。 |
[A-Z] | 英大文字。 |
{△,▲} | 前の文字の△文字以上▲文字以下の繰り返し。\d{3,5}ならば数字3文字以上5文字以下。 |
^ | 文字列の先頭。 |
$ | 文字列の末尾。 |
コメント