以下の内容はhttps://unageanu.hatenablog.com/entry/20081207/1228637773より取得しました。


正規表現"\w"は、$KCODEが設定されていれば日本語にマッチする。

JavaScriptの 正規表現"\w"は日本語にマッチしないわけですが、Rubyではマッチしたはず、と思って確認。

str = ""
puts str =~ //
puts str =~ //
puts str =~ /./
puts str =~ /\w/

実行結果です。

0
0
0
nil

あれ?

マニュアルをよく見ると「多バイト文字に対応した正規表現では」との条件がついていました。

Ruby リファレンスマニュアル - 正規表現

「多バイト文字に対応した正規表現」についても↑のページの上のほうに解説があって、

「多バイト文字に対応した正規表現」とは、 $KCODE が設定されているか、あるいは明示的に漢字オプション(正規表現リテラルを参照)を指定するなどにより多バイト文字にマッチし得る正規表現を指します。

とのこと。$KCODEを設定するか、コンストラクタ引数で明示すればOKらしい。ふむ。

# $KCODEの初期値を確認
puts $KCODE # → NONE

puts "---"

# コンストラクタで明示してみる
puts "" =~ Regexp.new( '\w', nil, "UTF8")
puts "" =~ Regexp.new( '\w') # 明示しない場合はマッチしない。

puts "---"

# UTF-8に設定
$KCODE = "UTF8"
str = ""
puts str =~ //
puts str =~ //
puts str =~ /./
puts str =~ /\w/

実行結果です。マッチするようになっていますね。

NONE
---
0
nil
---
0
0
0
0



以上の内容はhttps://unageanu.hatenablog.com/entry/20081207/1228637773より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14