Docly Child

正規表現を使って文字を置換する

269 views

この記事では、ReplaceTextを使って文字を置換する方法について紹介します。

また、文字列から指定した文字を削除する設定も合わせて紹介しています。


文字置換を利用する意図

ReplaceTextを用いた文字置換は、表計算ソフトの以下のような関数に相当します。

・Excel, GoogleSpreadsheetのSUBTITUTE関数
・GoogleSpreadsheetのREGEXREPLACE関数

また、置換対象となる文字は、正規表現を使用して指定することが可能です。
※正規表現の詳細については、こちらをご覧ください。

 指定した文字列を別の文字に置換する

ここでは、すでに入力されている文字列を指定し、別の文字列に置換する方法をご紹介します。

 

以下のような、宛名以外が定型文となっているメールを例として扱います。

||%%NAME%%||さん

暑中見舞い申し上げます。
以上です。

このような場合、宛名部分の||%%NAME%%||という文字列を任意の文字列に変更する際に、ReplaceTextによる置換を利用できます。

メール本文をTextアクションで作成し、その後ReplaceTextアクションを設定します。

  • ReplaceTextアクションを設定します
  • 検索対象テキストに、Textのアウトプットを指定します
  • 検索クエリに、||%%NAME%%||と入力します
  • 正規表現をOFFにします
  • 置き換えるテキストに、任意の名前を入力します

  • GmailSendを設定します
  • 本文パラメータにReplaceTextのアウトプットを指定します

  • ReplaceTextのアウトプットおよび送信されたメールを確認すると、以下のようになっています。

 

Textアクションで作成したメール本文のアウトプットを、上記とは別のReplaceTextアクションに再利用することにより、新たに別の宛名のメールを同ワークフロー内で作成することも可能です。

 正規表現で指定した文字列を削除する

ReplaceTextアクションの「置き換えるテキスト」パラメータを無記入にすると、「検索対象クエリ」で指定した文字列を削除することができます。
この際、置換対象となる文字は正規表現を使用して指定することが可能です。
「正規表現」のスイッチをON(True)に設定し、「検索クエリ」に正規表現を入力することで対象を指定することができます。

以下で、正規表現を使用し指定箇所を削除する例をご紹介します。
この際、エスケープ処理が必要になる主な文字も合わせてまとめています。

削除対象 対応する正規表現
すべての改行 \n
連続改行 \r\n
半角数字以外 \D
半角数字のみ \d
半角英数字 [0-9a-zA-Z]
すべてのHTMLタグ <(".*?"|'.*?'|[^'"])*?>
何らかの文字 の後すべて (?<=何らかの文字\s).+
すべての半角スペース \s
先頭の1文字のみ ^.
末尾の1文字のみ .$
1行内のxからyの間の文字のみ (?<=x).*(?=y)
改行を含む複数行からxからyの間の文字のみ (?<=x)[\s\S]*(?=y)
記号の内容 エスケープする文字
バックスラッシュ \\
セットやクラスの開始 [
セットの終了 ]
クオンタムの開始 {
クオンタムの終了 }
グループの開始 (
グループの終了 )
オプションのセット |
文字列の開始 ^
文字列の末尾 $
任意の文字 .
0回以上の繰り返し *
1回以上の繰り返し +
0回または1回の繰り返し ?

 正規表現を用いず特定の文字を削除する

正規表現を用いない場合は、そのまま削除したい文字や記号を「検索クエリ」パラメータに入力します。

例)年月日の区切りの記号を削除する

年月日を区切っているスラッシュのみを削除し、「YYYYMMDD」のフォーマットに統一するとします。
今回に関しては、「正規表現」のスイッチはON/OFFどちらに設定していても問題ありません。

  • 「検索クエリ」パラメータに削除したい「/」(スラッシュ)を指定する
  • 「置き換えるテキスト」クエリは空欄にしておく

※その他、-(ハイフン)や.(ドット)、単位等が含まれた文字列も、同じ方法で不要な単位や記号を削除することができます。

<Regex>正規表現<ReplaceText>検索して置換

このページは役に立ちましたか?