はじめに
前回はIBM iで正規表現(1)【FF RPGでの使い方】についてご紹介しました。
IBM iで正規表現を使用する際には、1つ問題があります。
具体的には、IBM iでは「\(バックスラッシュ)」が「¥(円マーク)」として認識されてしまうことです。
今回は、IBM iで正規表現を使う際に、バックスラッシュを扱う方法をご紹介します。
本記事では、CCSIDに5035を使用しています。
検証環境
- PC環境:Windows10 日本語
- エミュレータ:P-COMM 15.0 ホストコードページ 939
- IBM i:V7R5 CCSID 5035
なぜバックスラッシュが使用できないのか?
こちらの記事でご調査いただいている通り、エミュレータソフトの違いによって文字の見え方が異なることがあります。
IBM iで正規表現を使う際に、バックスラッシュを扱う方法
CCSID 5035では、バックスラッシュを16進数で「E0」と表されます。
そのため、バックスラッシュを「X'E0'」として、16進数で直接表現します。
REGEX = '^' + X'E0' + 'd{7}$';
EXEC SQL
Set :COUNT = REGEXP_COUNT(TRIM(:INPUT), :REGEX);
ご参考になれば幸いです。最後までお読み頂きありがとうございます。