テキストから特定の文字を抽出する

15 views

この記事では、テキストから特定の文字を抽出する色々な方法を紹介します。

正規表現の利用

この記事では、一部で「正規表現」を利用します。
正規表現とは、文字の並び方のルールを使って、テキストの中から特定のパターンを探したり、置き換えたりするための方法です。
正規表現の記述は少し難しく覚えるまで大変ですが、一度使えるようになると文字検索や置換が一気に効率化でき、とても便利な仕組みです。
なお、対象とするテキストによっては、今回紹介する正規表現の表記に調整が必要な場合があります。

※正規表現の詳細については、こちらを参照ください。

 各アクションの紹介

この記事では、以下のアクションを使用してテキストから文字を抽出する方法を紹介します。

  • SplitTextアクション(テキストを分割)
  • ReplaceTextアクション(検索して置換)
  • MatchTextアクション(正規表現で検索)

まずは、各アクションを簡単に説明します。

SplitTextアクションは、指定した区切り文字でテキストを分割し各項目をリスト形式で出力します。

本来、ReplaceTextアクションは、テキストから指定した文字を検索して別の文字と置き換えるために使用します。

 

しかし、正規表現を活用することで、指定した文字列を抽出する際にも使用できます。

 

MatchTextアクションは、テキスト内を正規表現で検索した結果を出力します。
正規表現にマッチする全文の他、キャプチャグループを使用して指定部分を個別に出力できます。

キャプチャグループとは、正規表現の中で丸括弧 ( ) で囲んだ部分のことです。
正規表現にマッチした文字の一部を取り出したり、置換時に再利用したりできます。
( ) で囲まれた部分が 1つのキャプチャグループになり、前から順に $1、$2 で指定できます。

例:
・テキスト:  2012-12-12
・正規表現:  (\d{4})-(\d{2})-(\d{2})
・グループ1($1):  2012 (年、4桁数字)
・グループ2($2):  12 (月、2桁数字)
・グループ3($3):  12 (日、2桁数字)

AUTOROでは、キャプチャグループを、ReplaceTextアクションやMatchTextアクションで利用できます。

 設定例1:メールアドレスからドメインを抽出する

メールアドレス「account@testmail.co.jp」から、ドメイン部分「testmail.co.jp」のみを抽出する方法を紹介します。

  • SplitTextアクションを使用する場合は、区切文字欄に「@」を設定して、メールアドレスを前後に分解します。
  • SplitTextアクションの出力はリスト形式なので、GetItemFromListアクション(リストから要素を取得)で、リストの後半部分(インデックス1)を取得します。

 

参考:リスト/配列

ReplaceTextアクションを使用する場合は、まず検索クエリ欄にテキスト全体を表す正規表現を設定します。
ヌケモレ無くテキスト全体を表現する正規表現を設定しないと、正しく処理されませんのでご注意ください。

今回の例では、以下の正規表現を使用しています。

(.+)@(.+)

キャプチャグループを前後に設定しましたので、後半のドメイン部分を示すキャプチャグループは「$2」です。

 

  • MatchTextアクションを使用する場合は、正規表現欄にドメイン部分を抽出できる正規表現を設定します。
    ReplaceTextアクションと異なり、正規表現は目的の箇所を含む一部分を抜粋する表現で問題ありません。
    今回は、「@以降の1文字以上の文字」として以下を設定します。
    @(.+)

    また、キャプチャグループを利用するため、詳細オプション「マッチした文字列すべてを取得」を無効にします。

  • MatchTextアクションの出力はリスト形式で、詳細オプション「マッチした文字列すべてを取得」を無効にした場合は以下のような出力になります。
    [
     正規表現にマッチした全文,
     キャプチャグループ1,
     キャプチャグループ2,
     キャプチャグループ・・・
    ]

    今回は、GetItemFromListアクションで、キャプチャグループ1(インデックス1)を取得します。

 

 設定例2:住所から都道府県名を抽出する

住所「東京都新宿区」から、都道府県部分のみを抽出する方法を紹介します。

  • SplitTextアクションを使用する場合は、区切文字欄に「都」を設定して、住所を前後に分解します。
  • GetItemFromListアクションで、リストの前半部分(インデックス0)を取得します。

 

SplitTextアクションは区切文字欄で複数指定できませんので、都道府県別にSplitTextアクションを分ける必要があります。
また、区切文字は出力結果に含まれないため、「東京都」として出力できません。
それらを考慮すると、SplitTextアクションでの都道府県の抽出はあまり現実的ではありません

ReplaceTextアクションを使用する場合は、まず検索クエリ欄にテキスト全体を表す正規表現を設定します。
ヌケモレ無くテキスト全体を表現する正規表現を設定しないと、正しく処理されませんのでご注意ください。

今回の例では、以下の正規表現を使用しています。

(.+都|道|府|県).+

この場合、都道府県を示すキャプチャグループは「$1」です。

 

  • MatchTextアクションを使用する場合は、正規表現欄に都道府県部分を抽出できる正規表現を設定します。
    今回は、以下で設定した正規表現がそのまま都道府県として利用できるため、キャプチャグループは使用していません。
    .+都|道|府|県
  • MatchTextアクションの出力は、抽出結果が1つのみでもリスト形式となります。
    今回は、リスト形式をテキスト化するために、Textアクションでテキスト化します。

 

 設定例3:日付から月を抽出する

日付「2026/12/25」から、月部分「12」のみを抽出する方法を紹介します。

  • SplitTextアクションを使用する場合は、区切文字欄に「/」を設定して、年月日をそれぞれ分解します。
  • GetItemFromListアクションで、リストから月部分(インデックス1)を取得します。

 

ReplaceTextアクションを使用する場合は、まず検索クエリ欄にテキスト全体を表す正規表現を設定します。
ヌケモレ無くテキスト全体を表現する正規表現を設定しないと、正しく処理されませんのでご注意ください。

今回の例では、以下正規表現を使用しています。

\d+\/(\d+)\/\d+

キャプチャグループ「$1」にて、月部分の取得が可能です。

 

参考情報として、ReplaceTextアクションを使用した日付の書式変更をご紹介します。

以下の正規表現で、各数字をキャプチャグループで取得できるようにします。

(\d+)\/(\d+)\/(\d+)

「置き換えるテキスト」欄で、キャプチャグループを使用した任意書式を記述します。

例:「2026/12/25」を「2025年12月25日」に書式変更

$1年$2月$3日

 

  • MatchTextアクションを使用する場合は、正規表現欄に月部分を抽出できる正規表現を設定します。
    今回は、「/ に挟まれた数字」として以下を設定します。
    \/(\d+)\/

    また、キャプチャグループを利用するため、詳細オプション「マッチした文字列すべてを取得」を無効にします。

  • MatchTextアクションのリスト形式の出力から、GetItemFromListアクションで、キャプチャグループ1(インデックス1)を取得します。

 

[参考記事]

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

Share this Doc

テキストから特定の文字を抽出する

Or copy link

CONTENTS