目次

Search

  1. はじめに
  2. 関数リファレンス
  3. 定数
  4. 演算子
  5. 日付
  6. 関数
  7. システム変数
  8. データ型リファレンス

関数リファレンス

関数リファレンス

REG_EXTRACT

REG_EXTRACT

入力値から正規表現のサブパターンを抽出します。たとえばフルネームの正規表現から、姓または名を抽出することもできます。
REG_REPLACE関数を使用して、文字列内の文字を新しい文字パターンに置換します。

構文

REG_EXTRACT (
subject
,
pattern, subPatternNum
)
引数
必須/
オプション
説明
subject
必須
文字列データ型。正規表現のパターンと比較する値を渡します。
pattern
必須
文字列データ型。一致させる正規表現パターン。Perl互換の正規表現構文を使用する必要があります。パターンは、一重引用符で囲みます。
subPatternNum
オプション
整数値。一致させる正規表現のサブパターン番号。サブパターン番号は、以下のガイドラインを使用して決定します。
  • 値を指定しない、または1。最初の正規表現サブパターンを抽出します。
  • 2. 2番目の正規表現サブパターンを抽出します。
  • n. n番目の正規表現サブパターンを抽出します。
デフォルトは 1 です。

Perl互換の正規表現構文の使用

REG_EXTRACT関数およびREG_MATCH関数では、Perl互換の正規表現構文を使用する必要があります。
以下の表に、Perl互換の正規表現構文のガイドラインを示します。
構文
説明
.(ピリオド)
任意の1つの文字に一致します。
[a-z]
1つの文字インスタンスに一致します。たとえば、[a-z]ではabに一致します。大文字のコード
\d
0~9の任意の数字のうち、1つのインスタンスに一致します。
\s
空白1文字に一致します。
\w
アンダースコア(_)を含む英数字1文字に一致します。
()
式をグループ化します。たとえば(\d\d-\d\d)では、かっこによって正規表現\d\d-\d\dがグループ化されます。この正規表現では12-34のように、任意の2つの数字の後にハイフンが続き、さらに任意の2つの文字が続くものが検索されます。
{}
指定された文字数に一致します。たとえば、\d{3}は、650または510などの任意の3桁の番号に一致します。また、[a-z]{2}は、CAまたはNYなどの任意の2文字に一致します。
?
前にある文字または文字のグループに、0回または1回一致します。例えば、\d{3}(-{d{4})?は、任意の3桁の数字、および任意の3桁の数字にハイフンと任意の4桁の数字が続くものの両方に一致します。
*(アスタリスク)
アスタリスクの後に続く、0個以上の値のインスタンスに一致します。たとえば*0は、任意の値が0の前に置かれたものに一致します。
+
プラス記号の後に続く、1個以上の値のインスタンスに一致します。たとえば、\w+は、英数字1文字が続く任意の値です。
たとえば以下の正規表現は、93930などの5桁のアメリカの郵便番号、および93930-5407などの9桁の郵便番号を検索します。
\d{5}(-\d{4})?
\d{5}は、93930などの5つの数字を表します。-\d{4}を囲むかっこによって、式のこの部分がグループ化されています。ハイフンは、93930-5407などの9桁の郵便番号の中のハイフンを表します。\d{4}は4つの数字、たとえば5407などを表します。疑問符は、ハイフンと4つの数字がオプションであるか、1回のみ出現することを表します。

COBOL構文をPerl互換の正規表現構文へ変換

COBOL構文に精通している場合、以下の情報を使用してPerl互換の正規表現を書き込むことができます。
以下の表に、COBOL構文の例とそれに対応するPerl構文を示します。
COBOL構文
Perl構文
説明
9
\d
0~9の任意の数字のうち、1つのインスタンスに一致します。
9999
\d\d\d\d
または
\d{4}
1234や5936など、0~9の任意の4桁の数字に一致します。
x
[a-z]
1つの文字インスタンスに一致します。
9xx9
\d[a-z][a-z]\d
1ab2など、任意の数字の後に2つの文字が続き、その後に1つの数字が続くものに一致します。

SQL構文のPerl互換の正規表現構文への変換

SQL構文に精通している場合、以下の情報を使用してPerl互換の正規表現を書き込むことができます。
以下の表に、SQL構文の例とそれに対応するPerl構文を示します。
SQL構文
Perl構文
説明
%
.*
任意の文字列に一致します。
A%
A.*
「A」で始まる任意の文字列(「Area」など)に一致します。
_
.(ピリオド)
任意の1つの文字に一致します。
A_
A.
「A」で始まり、その後に任意の1文字が続く文字列(「AZ」など)に一致します。

戻り値

入力値の一部である、
n
番目のサブパターンの値を返します。
nth
のサブパターンは、subPatternNumで指定した値に基づいています。
入力値またはパターンがNULLの場合はNULLです。

式でREG_EXTRACTを使用して、姓、ミドルネーム、名が一致する正規表現からミドルネームを抽出することもできます。例えば、以下の式は正規表現のミドルネームを返します。
REG_EXTRACT (Employee_Name, '(\w+)\s+(\w+)\s+(\w+)', 2)
Employee_Name
Return Value
Stephen Graham Smith
Graham
Juan Carlos Fernando
Carlos