/ 最近 .rdf 追記 編集 設定 本棚

脳log[20120108]



2012年01月08日 (日) [正規表現][Ruby] \wと \bの話。俺は Takataさんが期待したように、Perlと Pythonに倣った動作が自然なものだと思う。正規表現の利用者として、正規表現にはカギ括弧付きで使われる「改行」と「単語」という言葉が一部のメタ文字の動作仕様に現れると思ってきた。$と ^と .と \wと \bのことだ。\wの意味を規定する「単語」と、\bの意味を規定する「単語」が別物だなんて事態は、事をややこしくするだけではないか。一体どれだけの正規表現利用者が Rubyに固有のこだわり仕様に気付くというのか。他の実装の利用経験から手探りで使う人間も多いだろうに、落とし穴を掘るまねはよせ。■「\b は \p{Word} に従う」というルールはいただけない。\p{Word}は知らなくても \wと \bは知ってるという人間は大勢いる。■もしかして、Ruby 1.8では /\w/sとか /\w/eが ASCII範囲外の全ての文字にマッチしてた?ドキュメントでは[0-9A-Za-z_0-9A-Za-z]のようなものだと言いながら? \dは全角数字にマッチしないままで?その精神がわからん。そして俺は(Rubyの) \wを知っていたとはいえないようだ。もはやどうにでもなれ。■(ドキュメントを読んだついで) 「\b 文字クラス指定の外では語境界 (\w と \W のあいだにマッチ)。文字クラス指定内ではバックスペース (0x08)。」