正規表現利用時における、文字クラス内のハイフン指定の取り扱い差異

 

 

Biz/Browser V、およびBiz/Browser V LTSにおいて、正規表現クラスではPCRE(Perl Compatible Regular Expressions)を使用しています。

Biz/Browser V v5.1.3.1以前と、Biz/Browser V LTS(及び64bit版)ではこのPCREのバージョンが異なっています。

 

PCREのバージョン最新化により、「構文チェックが厳格化された」ことによる、動作の差異が確認されております。

 

対象Biz/Browser PCREバージョン

Biz/Browser V v5.1.3.1以前

PCRE 4.4 (2003年頃リリース)

Biz/Browser V LTS(及び64bit版)以降

PCRE 8.45 (2021年頃リリース)

 

差異内容

 

文字クラス内の-(ハイフン)をリテラルとして使用した場合の挙動に差異が発生しています。

 

例)RegexPattern.Compile("^[ー-\\s]+$");

 

対象Biz/Browser 動作

Biz/Browser V v5.1.3.1以前

-(ハイフン)は、文字リテラルとして判定されます。

Biz/Browser V LTS

「半角長音符(U+FF70)から空白文字(\s)までの範囲指定」と解釈されます。

ー(U+FF70)~ \s (空白文字、スペース、タブ、改行など)は範囲指定としては無効となり、エラー扱いとなります。

 

※PCREの正規仕様では、範囲指定として解釈されるのが正しい仕様です。(つまり、Biz/Browser V LTSの挙動が正しい動作となります。)

  PCRE4.4では文字クラス内の-(ハイフン)が曖昧に解釈されており、一方PCRE8.45においては厳密に解釈されます。

  文字クラス内の-(ハイフン)をリテラルとして使用する場合は、PCRE本来の仕様に則り、エスケープを行うか、文字クラスの先頭または末尾に配置するのが正しい記述となります。

 



「オンラインマニュアル」一覧へ戻る
「Bizの宝箱」TOPへ戻る