2010年12月 2日

[ruby-list:47669] Re: 文字列中に含まれる 8 進数表記 "\nnn" というパターンに正規表現でマッチさせたい

木村です。

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/


投稿者 xml-rpc : 2010年12月 2日 03:12
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/100436
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。