コンテンツにスキップ

文字の抽出

列の中から一部の文字を取り出します。先頭 3 文字を取る、文字列の中の数字だけを抜く、といった使い方をします。

区切り文字で全体を分けたいときは文字列の分割を使ってください。こちらは1 か所だけを取り出して 1 列にするものです。

入出力

ポート内容
入力データデータ
出力データデータ

Spark エンジンでも動きます。行の数は変わりません。

設定項目

フォームの見出しの並び — 「詳細設定」 → 「検索対象の設定」 → 「条件に一致した対象の抽出方法を設定」。条件によって出ない見出しもあります。

結果の挿入先を設定
新規列に挿入(既定)か既存列に上書き。選んだ方で、次に出る項目が変わります。
新規列名を入力必須
「新規列に挿入」のときに出ます。取り出した文字を入れる新しい列の名前。
文字列を選択必須
「既存列に上書き」のときに出ます。この 1 項目が、取り出す元の列と結果の書き戻し先を兼ねます。
処理対象列を選択必須
「新規列に挿入」のときに出ます。文字列・日付・日付時間・時間の列が選べます。
処理タイプを選択
固定長切り出し(既定)か条件に一致した文字を抽出。以降の項目がまるごと入れ替わります。

結果の列は文字列になります。 取り出せるものがなかった行は空欄です。

固定長切り出し

位置と長さで取り出します。

切り出し開始位置を入力必須
何文字目から取るか。1 文字目を 1 と数えます。
切り出す文字数を入力必須
何文字取るか。残りが足りなければ、あるところまでで止まります。
切り出し開始位置を選択
オプションの中にあります。先頭から切り出し(既定)か末尾から切り出し。「末尾から切り出し」では、後ろから数えた位置が開始位置になります。

条件に一致した文字を抽出

形で見つけて取り出します。条件の組み立て方は文字の置換の「条件に一致した文字を置換」と同じで、こちらには取り出し方の設定が加わります。

検索条件
目印になる文字を指定するまとまりです。いくつでも足せますが、同じ条件タイプを 2 つ置くことはできません。中身は条件タイプを選択(から始まる / で終わる / を含む / が先頭の / が末尾の)、目印の文字を入れる欄、文字カテゴリを指定する(on にすると目印を数字 / 英字 / 日本語文字 / 記号 / スペースの種類で指定します。off なら文字を直接入力します。カンマ区切りで複数可)、開始文字を置換対象に含める(既定 on。条件タイプによって「終了文字」「先頭文字」「末尾文字」と名前が変わり、「を含む」のときは出ません)です。
文字カテゴリを指定する
取り出す中身の形を決めます。on にすると連続する文字の種類を選択が出て、連続する数字(既定)/ 連続する数字+英字 / 連続する文字を指定するが選べ、「連続する文字を指定する」では文字カテゴリを選択から数字 / 英字 / 日本語文字 / 記号 / スペースを選びます。off のままだと「中身」は「どんな文字でもよい」になります。この状態で条件タイプだけを指定すると、目印から行末(または行頭から目印)までがまるごと取り出されます。
文字数を指定する
on にすると数値を入力が出て、その文字数ちょうどの並びだけが対象になります。条件タイプ「を含む」とは一緒に使えません。
抽出方法を選択
見つかったものが複数あるときの取り方。下の表を参照してください。
数値を入力(複数可)
抽出方法が「最初からn番目の対象を抽出」「最後からn番目の対象を抽出」のときに出ます。カンマで区切ると複数の番号を指定でき、取り出した値は , でつながります。
条件に一致した対象以外を抽出する
オプションの中にあります。on にすると、見つかった部分を取り除いた残りが結果になります。このとき「抽出方法を選択」は出ません。
正規表現でパターンを指定する
オプションの中にあります。ここに書くと、上の条件の設定はすべて出なくなり、書いた形だけで探します。取り出す部分をかっこでくくる必要はありません。「抽出方法を選択」も効かなくなり、1 行の中で複数見つかったときは全部が , でつながります。最初の 1 つだけが欲しいときは、正規表現を使わずに条件タイプと「抽出方法を選択」で組んでください。

抽出方法を選択

抽出方法結果
最初の対象を抽出(既定)いちばん先にあるもの
最後の対象を抽出いちばん後ろにあるもの
全対象をカンマ区切りで抽出すべてを , でつなぐ
最初からn番目の対象を抽出前から数えた番号で指定
最後からn番目の対象を抽出後ろから数えた番号で指定

番号で指定したものがその行になくても、エラーにはなりません。 見つかった分だけが返り、1 つもなければ空欄になります。

エラーと対処

どのエラーも、設定を直して実行し直せば直ります。 データを直す必要はありません。

新規列名が既にある

「新規列に挿入」で、入力した列名がすでにデータにあるときに出ます。

新規列名({{new_col}})が既存の列名と重複しています。

直し方 — 別の名前にするか、「既存列に上書き」に切り替えてください。

正規表現にカッコがない

正規表現で、取り出す部分をカッコでくくっていないときに出ます。

正規表現をカッコでくくってください。例: (hoge|huga)

直し方 — 取り出したい部分を ( ) でくくってください。\d+ ではなく (\d+) です。

同じ条件タイプを 2 つ置いた

「検索条件」を複数足して、同じ条件タイプを選んでいるときに出ます。

条件タイプが設定間で重複しています。

直し方 — 条件タイプは 1 つずつにしてください。

条件の文字が空

「検索条件」を足したまま、目印の文字を入れていないときに出ます。

抽出条件に文字が入力されていません。

直し方 — 文字を入れるか、その「検索条件」を消してください。

「を含む」と文字数指定を一緒に使った

抽出条件「を含む」と文字数の指定を併用することはできません。

直し方 — どちらかを外してください。

文字数が空

「文字数を指定する」を on にしたまま、数値を入れていないときに出ます。

文字数が入力されていません。

直し方 — 数値を入れるか、「文字数を指定する」を off にしてください。

文字カテゴリが未選択

「連続する文字を指定する」を選んだまま、種類を選んでいないときに出ます。

文字カテゴリが選択されていません。

直し方 — 数字・英字・日本語文字・記号・スペースから選んでください。

抽出する番号に数字以外が入っている

「最初からn番目の対象を抽出」などで、「数値を入力(複数可)」に数字以外が入っているときに出ます。

抽出する番号に数字以外の文字が含まれています。

直し方 — 数字だけを入れてください。複数指定するときはカンマで区切ります。

抽出する番号が 0 以下

抽出する番号は1以上を入力してください。

直し方 — 1 以上の整数にしてください。先頭は 1 です。

正規表現が不正

「正規表現でパターンを指定する」に書いた形が解釈できないときに出ます。

正規表現 {{regexp_text}} が不正です。参考:https://docs.python.org/ja/3/howto/regex.html

直し方 — かっこの対応を確かめてください。( [ などをそのままの文字として使うときは \( のように前に \ を付けます。

列を選ばずに実行した

「処理対象列を選択」(「既存列に上書き」なら「文字列を選択」)が空のまま実行したときに出ます。前の処理で列名が変わり、選んでいた列が入力データからなくなったときにも同じメッセージです。

対象の列が選択されていません。

直し方 — 列を選び直してください。

よく使う例

1. 先頭 3 文字を取る

お題 — 商品コードの先頭 3 文字が分類を表している

入力 — 商品コード に ABC12345

設定 — 固定長切り出し、開始位置 1、文字数 3

出力 — ABC

2. 末尾 4 文字を取る

お題 — 電話番号の下 4 桁だけを見たい

入力 — 電話番号 に 0312345678

設定 — 固定長切り出し、「末尾から切り出し」、開始位置 1、文字数 4

出力 — 5678

3. 文字列の中の数字を抜く

お題 — 商品名に混ざっている番号だけを取り出したい

入力 — 商品名 に 商品A123B

設定 — 条件に一致した文字を抽出、「文字カテゴリを指定する」を on にして「連続する数字」、抽出方法「最初の対象を抽出」

出力 — 123

4. 数字が複数あるとき全部取る

お題 — 1 つの値に入っている番号をすべて並べたい

入力 — コード に A1-B2-C3

設定 — 「連続する数字」、抽出方法「全対象をカンマ区切りで抽出」

出力 — 1,2,3

5. 2 番目の数字だけ取る

お題 — 2 つ目の番号が意味を持つ

入力 — コード に A1-B2-C3

設定 — 抽出方法「最初からn番目の対象を抽出」、数値 2

出力 — 2

6. 数字を取り除いた残りを見る

お題 — 番号を外した商品名でまとめたい

入力 — 商品名 に 商品A123B

設定 — 「連続する数字」、オプションの「条件に一致した対象以外を抽出する」を on

出力 — 商品AB

7. 自分で書いた形で取り出す

お題 — 決まった形のコードだけを抜きたい

入力 — 備考 に 受注番号 ORD-2024-0001 です

設定 — オプションの「正規表現でパターンを指定する」に ORD-\d{4}-\d{4}

出力 — ORD-2024-0001

注意 — 同じ行に 2 つ以上あると全部つながります。受注番号 ORD-2024-0001 と ORD-2025-0002 なら ORD-2024-0001,ORD-2025-0002 になります

関連