新しい関数!正規表現関数使っていますか?

2024年3月23日サポぶろぐ

みなさん、こんにちは!
株式会社アシスト北海道でWebFOCUSのサポートを担当しております加津(かつ)です。

前回の記事「サポセン初の試み!WebFOCUSユーザー会「FOBI Lab」の開催報告!!」はご覧いただけましたでしょうか?

実は時間の関係上、泣く泣く「FOBI Lab」に含めることを諦めた新機能がいくつかあります。
そこで、今回は「FOBI Lab」ではお伝えすることができなかったけれど、皆さんに伝えたい
意外と使えちゃう関数 4 兄弟をご紹介します!

なぜ 4 兄弟かというと、関数名が結構似ているからなんです!
その関数がコチラ!

  • REGEXP_COUNT(パターンに一致する文字列の個数をカウント)
  • REGEXP_INSTR(パターンに一致する文字列の位置を取得)
  • REGEXP_REPLACE(パターンに一致する文字列を別の文字列に置換)
  • REGEXP_SUBSTR(パターンに一致する1つめの文字列を取得)

いずれも特定のパターンに文字列が一致した場合に、どういう処理を行うのかという関数です。
関数名は似ていますが、それぞれ性格(処理)が異なりますので、1 つずつ見ていきましょう!

REGEXP_COUNT

特定のパターンに一致する文字列の個数をカウントする関数です。

構文
REGEXP_COUNT(string, pattern)
string :検索対象となる入力文字列
pattern:一致させる正規表現パターン

例えば、「MODEL」項目の中から AUTO という文字列をカウントしたいという場合
などに使用します。

-*---------------------------------------------------------
TABLE FILE CAR
SUM
COMPUTE TEST/I3 = REGEXP_COUNT(MODEL, 'AUTO');
BY MODEL
END
-*---------------------------------------------------------
※出力結果から一部抜粋

正規表現パターンには以下のようなものがあります。

.: 任意の単一文字を表します。
*: 0 個以上の任意の文字を表します。
?:0 個または 1 個の任意の文字を表します。
^:行の先頭を表します。
$:行の末尾を表します。
[]:大括弧で囲まれた文字セットのいずれか 1 文字を表します。
[^]:大括弧で囲まれた文字セット以外の任意の 1 文字を表します。
|:OR 演算子を表します。
¥:エスケープ特殊文字です。
():文字シーケンスを含みます。

REGEXP_INSTR

特定のパターンに一致する文字列が、左から何番目の位置にあるのかを取得する関数です。

構文
REGEXP_INSTR(string, pattern)
string :検索対象となる入力文字列
pattern:一致させる正規表現パターン

例えば、「MODEL」項目の中で、AUTO という文字列がどこにあるかを取得したいという
場合に使用します。

-*---------------------------------------------------------
TABLE FILE CAR
SUM
COMPUTE TEST/I3 = REGEXP_INSTR(MODEL,'AUTO');
BY MODEL
END
-*---------------------------------------------------------
※出力結果から一部抜粋

上記のように AUTO は左から何番目の位置にあるかを取得できます。

REGEXP_REPLACE

特定のパターンに一致する文字列を、別の文字列に置き換える関数です。

構文
REGEXP_REPLACE(string, pattern, replacement)
string :検索対象となる入力文字列
pattern :一致させる正規表現パターン
replacement:置換する文字列

例えば、「MODEL」の DOOR を AUTO に置き換えたいという場合に使用します。

-*---------------------------------------------------------
TABLE FILE CAR
SUM
COMPUTE TEST/A20 = REGEXP_REPLACE(MODEL,'DOOR','AUTO');
BY MODEL
END
-*---------------------------------------------------------
※出力結果から一部抜粋

また、上述の正規表現パターンを使用すると、例えば「MODEL」の先頭 2000 や 2002 を
2023 に置き換えるということもできます。

-*---------------------------------------------------------
TABLE FILE CAR
SUM
COMPUTE TEST/A20 = REGEXP_REPLACE(MODEL,'^200.','2023');
BY MODEL
END
-*---------------------------------------------------------

「^200.」で先頭が 200 で始まり、任意の 1 文字を加えた文字列を表します。

※出力結果から一部抜粋

REGEXP_SUBSTR

特定のパターンに一致する 1 つめの文字列を取得する関数です。

構文
REGEXP_SUBSTR(string, pattern)
string :検索対象となる入力文字列
pattern :一致させる正規表現パターン

例えば、「MODEL」から 200 と任意の数値 1 字を含む文字列を取得したいという場合に
使用します。

-*---------------------------------------------------------
TABLE FILE CAR
SUM
COMPUTE TEST/A20 = REGEXP_SUBSTR(MODEL,'200[0-9]');
BY MODEL
END
-*---------------------------------------------------------
※出力結果から一部抜粋


今回はバージョン 9 以降で使用できる、新しい関数 4 兄弟をご紹介しましたが、
いかがでしたでしょうか?
この関数をマスターすると、文字列に対していろいろな処理ができちゃいます!
とても便利な関数ばかりなので、この機会にぜひ使ってみてください!

それでは次回の記事もお楽しみに!

<この記事をかいた人>
————————————————————————————————————
株式会社アシスト北海道 テクニカルサポート部情報基盤1課 加津 秀明
入社歴 : 2020年新卒入社、約2年間 Qlik 製品 のサポートを担当
    2023年より WebFOCUS のサポートを担当
趣味 : 海外ドラマ・野球観戦・ドライブ
ひとこと :いよいよプロ野球が開幕しましたね!野球観戦が楽しみです。
————————————————————————————————————