プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 このページをアンテナに追加 RSSフィード

 iTunes Music Store(Japan) なかのひと あわせて読みたいブログパーツ
|

0001 | 00 |
2004 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
2008 | 01 | 02 | 03 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 |
2010 | 03 | 04 | 06 | 07 | 09 | 10 | 11 |
2011 | 01 | 02 | 10 |
2012 | 04 |
2013 | 01 | 05 | 06 | 07 | 08 | 10 |
2014 | 02 | 03 | 05 | 09 |
2015 | 04 |
2016 | 09 | 11 | 12 |
はてな一覧
アンテナに追加
私のアンテナ
私のダイアリー
私のアーカイブ
私のアイデア
私のブックマーク
私のグループ
私のキーワード
ニュース系、今まで続いているシリーズモノの読み物
dKingyo Utility Toolkit Projectのリリース情報
やっぱり暗号化は大人の味(笑)
プログラムのパッキング方法を調べよ
ココが厳しいよMinGW
ライブラリアン通信
ゲームプログラミングどうしよう
CRCについて
ビット演算練習
d金魚の今更Ajax
Windows Tips
VC6 Tips
Win32 WTL Tips
Ruby for C++ User
Ruby Tips
今日のRubyで嵌った事
正規表現PIECE
書きかけ
続く・・・

私のダイアリーの人気記事
新しくブックマークされた記事


あまり、役に立たなそうな個人的に調べた情報や妄想に耽った事、今 勉強している事ヒソヒソと公開していたりします。 | 登録してくれている方々 | d金魚にメール | 当サイトは640x480の画面解像度に対応しています。
日記へのリンク、アンリンクはフリーですが、selfタグのついている部分のコンテンツの引用はご遠慮願います。ご協力よろしくお願いします。


2007-03-26 シーゲンガーのためのルビー PART.5

[][]Ruby for C++ User / gsub!中にパターンマッチした文字が上手く置換されない Ruby for C++ User / gsub!中にパターンマッチした文字が上手く置換されない - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク Ruby for C++ User / gsub!中にパターンマッチした文字が上手く置換されない - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

Powered by dKingyo Java | C言語 | C++ | C言語 | 逆引きハンドブック

今日のRubyで嵌った事。

Rubyの String#gsub! はsに行った処理によってオブジェクト内の文字列の置換してくれるのだと思っていた。

だが、違っていたのだ。

str = "abc def"
i = 0
str.gsub!("abc"){|s|
 s = %Q(Ruby[#{i}])
 p s
 i = i+1 
}

処理結果

"Ruby[0]"
"1 def"

sに処理結果を入れたので"1 def" ではなくて"Ruby[0] def"になってほしいのだ。


この原因は ...

str = "abc def"
i = 0
str.gsub!("abc"){|s|
 s =%Q(Ruby[#{i}])
 p s
 i = i+1 # ここにある。
}

最後に処理した結果がsに反映されてしまうのだ。

おそらくRuby関数仕様と同じ働きなのだろう・・・。

よって・・・

str = "abc def"
i = 0
str.gsub!("abc"){|s|
 ts = %Q(Ruby[#{i}])
 p ts
 i = i+1 
 ts
}
p str

にて期待する処理結果が返ってくる。

"Ruby[0]"
"Ruby[0] def"

嗚呼、これに気付けず無駄な時間を過ごす・・・。

この問題に3時間も費やしてしまった。

2007-03-25 正規表現PIECE VOL.1

[]Regex Tips / gsubでスペースに挟まれた文字を置換する時の注意 Regex Tips / gsubでスペースに挟まれた文字を置換する時の注意 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 を含むブックマーク Regex Tips / gsubでスペースに挟まれた文字を置換する時の注意 - プログラミングの作業に何の価値も見出せなくなってしまったd金魚による日記 のブックマークコメント

今日のRubyで嵌った事。

Ruby正規表現をしていて気付きました。

via http://www.jaist.ac.jp/~m-hatake/regexp/


 a b c d ef g hijk lm n

というスペースに挟まれた文字列があったとしましょう。

これらの文字列のスペースに挟まれた要素は全部で9個です。

これらすべてを「0」に置換したいと思います。


str = " a b c d ef g hijk lm n"
p str.gsub(/(\s)(\w+)(\s)/,"0")

これでよいと思った人・・・嵌ってます。

結果は以下のようになります。

"0b0d0g0lm n"

\sをスペースとして、説明すると

  • 先頭から検索してマッチしたので"\sa\s"を0に置換
  • 次のbの部分の先頭には\sはついていない
  • よってbをとばして次は\s
  • "\sc\s"はマッチしたよって置換・・・

といった形で一文字づつ抜かしていってしまいます。

なので、スペースを保持したいと思ったら正規表現の後方の\sを削除しないといけなかったのです。

と言う事で正解は・・・

str = " a b c d ef g hijk lm n"
p str.gsub(/(\s)(\w+)/,"0")

嗚呼、これに気付けず無駄な時間を過ごす・・・。


と言う事で今回のPIECEは

(\s)(\w+)(\s)
(\s)(\w+)

Program | Debug | dKingyo Utility Toolkit | library | D言語 | 御本とか | 備忘録 | テクニック | WayBack | 格言 | 英語 | 他力本願 | news | software |

デースケドガー