新しい関数!正規表現関数使っていますか?
みなさん、こんにちは!
株式会社アシスト北海道で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 のサポートを担当
趣味 : 海外ドラマ・野球観戦・ドライブ
ひとこと :いよいよプロ野球が開幕しましたね!野球観戦が楽しみです。
————————————————————————————————————