正規表現オブジェクトの文字コードの指定
【開発環境】
OS:Win10(64ビット)
Ruby 3.0.1
VSCodeバージョン: 1.57.1
・正規表現オブジェクトを使って文字列とのマッチを行う場合、
文字列の文字コードは「$KCODE」で設定されている文字コードを使ってマッチするかどうかを行います。
・「$KCODE」に設定が行われていない場合
デフォルトの値は「NONE(ASCII)」ですので日本語を取り扱うことは出来ません。「SJIS」「EUC」「UTF-8」のいずれかの文字コードを設定しておく必要があります。
通常は「$KCODE」に使用する文字コードを事前に設定しておけばいいのですが、正規表現を使用する場合だけ文字コードを別のものに指定することも出来ます。この場合は次のように正規表現オブジェクトを作成します。
/パターン/文字コード
【Regexp.newメソッドを使って正規表現オブジェクトを作成する場合】
Regexpクラスのクラスメソッドである「new」メソッド又は「compile」メソッドを使って正規表現オブジェクトを作成することも可能です。
Regexp.new(string[, option[, code]])
この時、3番目の引数で使用する文字コードを指定することが出来ます。文字コードとして指定できる値は先ほどと同じです。例えば文字コードに「UTF-8」を指定する場合は次のように記述します。
Regexp.new("パターン文字列", nil, "u")
3番目の引数を指定する場合は2番目の引数を省略できません。2番目の引数であるオプションに何も指定しない場合は「nil」を指定して下さい。
サンプルプログラム