木村さん

金子です。

どうやら僕には「\ 0 0 0 というキャラクタの並び」と「八進で000の値となる文字」の区別がついておらず、
的外れな質問をしてしまっていたことが理解できました。ありがとうございました。


2010年12月2日3:12 KIMURA Koichi <kbk / kt.rim.or.jp>:
> 木村です。
>
> Kensuke Kaneko さんは書きました (2010/12/02 2:25):
>
>> 以下のように "\000" "\243" を個別に指定すればマッチさせられるのですが、
>> "\nnn" というパターンの全ての文字を個別に指定するのはできれば避けたいです。
>>
>> "Ver.1.01 \000\243".match( %r{\000} )[0]
>> #=>  "\000"
>>
>> "Ver.1.01 \000\243".match( %r{\243} )[0]
>> #=>  "\243"
>
> マッチ対象の文字列がダブルクォートでくくられていますから、実際には
> \ 0 0 0 というキャラクタの並びじゃなくて、八進で000の値となる文字が
> そこにあることになります(\243も同様)。
>
> ですから、それにたいして \ のあとに数字の並びという正規表現をマッチさせようとしても
> するわけがありません。
>
>
>> そこで質問なのですが、
>>
>> 1. 文字列に含まれる "\nnn" というパターンに正規表現でマッチさせることは可能なのでしょうか?
>> 2. 可能である場合、どのような正規表現を書けば良いのでしょうか?
>> 3. 不可能である場合、 "\nnn" というパターンのみを文字列から削除する良い方法はないでしょうか?
>
> ということで良く考えれば 1. がきちんと実現できるはずです。
>
> irb(main):003:0> "Ver.1.01 \\000\\243".match( %r{\\[0-9]+} )
> => #<MatchData "\\000">
>
>
> --
> 木村浩一
>  I thought what I'd do was, I'd pretend I was one of those deaf-mutes or should I?
>  mail kbk at kt.rim.or.jp
>        web  www.kt.rim.or.jp/~kbk/zakkicho/
>             homepage3.nifty.com/farstar/
>
>
>
>



-- 
Kensuke Kaneko <kyanny / gmail.com>