[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: 正規表現 \b の動作



>>>>> In [meadow-users-jp : No.5035] 
>>>>> NAKAZONO Katsuhisa <nakazonok@xxxxxxxxxxxxx> wrote:
> > 試しに Perl だと、
> > 
> > bash-2.05b$ perl -e 'print "$&\n" if "1 _23_ 4" =~ /\b_23_\b/;'
> > _23_
> > 
> > となり、こちらは私の想像どおりの動きです。

> 家に帰って追試していたら分かりました。Perl でも動きは
> 同じでした。単に、Perl だと '_' を単語の一部として認識
> するというだけでした。

info の elisp-ja[1] の 「構文テーブル(syntax table)」を参照くだ
さい。

*scratch* バッファ上で、

(string-match "\\b_23_\\b" "1 _23_ 4")
nil

ですが、
(modify-syntax-entry ?\_ "w" emacs-lisp-mode-syntax-table)
を評価した後なら、

(string-match "\\b_23_\\b" "1 _23_ 4")
2

となります。_ を"単語構成文字"(`w'で指定)と設定した結果とい
うことです。

>>>>> In [meadow-users-jp : No.5033] 
>>>>> Hiroshi Fujishima <pooh@xxxxxxxxxxxxxxxxxxxx> wrote:
> > ; Gnus で振り分けがうまくいかなかった理由がやっと分かった・・・

> (modify-syntax-entry ?\_ "w" nnmail-split-fancy-syntax-table)

> としたらうまくいきませんか?

nnml-split で使われる構文テーブルによって正規表現でマッチす
る単語も変わります。ということ。

Gnusのメール振り分けならここも参考になるかも。
http://cgi.netlaputa.ne.jp/~kose/diary/?200304a&to=200304091#200304091


Footnotes: 
[1]  gnujdoc-20040106-2-pkg.tar.gz には elisp-ja が含まれて
     いませんでした。gnujdoc-20040106-3-pkg.tar.gz には入れ
     ました。
-- 
こせき // サポートページ
http://www.NetLaputa.ne.jp/~kose/MeadowBook/