2014年10月16日のブックマーク (12件)

  • 正規表現で最短マッチを知っとくとちょっと便利かも - (゚∀゚)o彡 sasata299's blog

    2012年05月01日21:34 Ruby 正規表現で最短マッチを知っとくとちょっと便利かも 正規表現ってあるじゃないですか。そうです。アレです。 とっても便利で、いろんな場面で役立つと思うんですが、ときどき最短マッチを使いたくなって「最短マッチってどう書くんだっけなぁ?」ってなってググることがあります(よね!) 通常は最長マッチになる 通常、正規表現内で * とか + とか付けると、直前の表現の0回/1回以上の繰り返しを表しますが、この書き方だとできるだけ長い要素にマッチしようとします。大事なことなのでもう一度言います。できるだけ長い要素にマッチしようとするんです。 大抵はそれで構わないんですが、ときどきそれでは困るケースがあります。例えばこんなケースを考えてみましょう(あんまり良い例が思いつかない)。 ・"名前(ニックネーム)"という形式 ・名前と(ニックネーム)の間には半角or全角ス

    crist18
    crist18 2014/10/16
    最短マッチ
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    crist18
    crist18 2014/10/16
    gsub
  • instance method String#gsub (Ruby 2.0.0)

    gsub(pattern, replace) -> String[permalink][rdoc] 文字列中で pattern にマッチする部分全てを 文字列 replace で置き換えた文字列を生成して返します。 置換文字列 replace 中の \& と \0 はマッチした部分文字列に、 \1 ... \9 は n 番目の括弧の内容に置き換えられます。 置換文字列内では \`、\'、\+ も使えます。 これらは $`、$'、$+ に対応します。 [PARAM] pattern: 置き換える文字列のパターンを表す文字列か正規表現。 文字列を指定した場合は全く同じ文字列にだけマッチする [PARAM] replace: pattern で指定した文字列と置き換える文字列 例: p 'abcdefg'.gsub(/def/, '!!') # => "abc!!g" p 'abcabc'.gs

    crist18
    crist18 2014/10/16
    gsub
  • Perlゼミ(サンプルコードPerl入門)

    Perl入学式 全6回のPerl入門講座。東京、大阪、沖縄、札幌で開催。(東京は4月と10月スタート、それ以外は5月スタート) YAPC::Japan Perlを軸としたITに関わる全ての人のためのカンファレンス。 東京 吉祥寺.pm 五反田.pm 大阪 なにわPerl 沖縄 沖縄.pm

    crist18
    crist18 2014/10/16
    “/a.*?s/”
  • RubyのString/Regexpクラスによる強力な文字列操作/正規表現

    連載目次 前回の「RubyのRangeクラスと範囲オブジェクト、範囲演算子、イテレーターの使い方」では、数などの範囲を表現するためのRangeクラスと、ArrayクラスやHashクラス、Rangeクラスに関わりの深い概念である「イテレーター」について解説しました。 今回も、引き続きRubyの組み込みクラスの解説を行います。ここでは、特に文字列を表現するためのStringクラスと、正規表現を扱うためのRegexpクラスについて学びましょう。 Stringクラスにも有用なメソッドがたくさんありますし、正規表現は文字列と密接に関わっており、文字列を扱う上で非常に強力な武器となります。ただし強力であると同時に、自分以外の人が書いた正規表現の意味を理解するのは困難です。用法用量を守って正しく正規表現を使いこなしましょう。 Stringクラスのメソッドに文字列操作を、よく使うものを中心に紹介 Stri

    RubyのString/Regexpクラスによる強力な文字列操作/正規表現
    crist18
    crist18 2014/10/16
    正規表現、文字列操作の決定版。
  • 【ruby】gsubで複数の文字パターンを置換する&後方参照する場合 - 訳も知らないで

    小さなことですが… 複数の文字パターンを置換する gsubで複数の文字を置換したい場合、メソッドチェーン?で 置換文字数分gsubを呼ばなきゃならんと思っとりました。 "hogeはfugaです。".gsub("hoge", "私").gsub("fuga", "男") #=> "私は男です。" 実は置換する対象をハッシュで渡せるとはつゆ知らず… 参照:gsub, gsub! (String) - Rubyリファレンス ruby1.9〜 "hogeはfugaです。".gsub(/hoge|fuga/, "hoge" => "私", "fuga" => "男") #=> "私は男です。" 第1引数で渡した正規表現に該当する文字を、第2引数のパターンにそって 置換してくれるようです。 でもなんかもっと素直に書ける方法がありそうな気がするが。 後方参照する場合 正規表現を使った場合、括弧で囲んだ部

    【ruby】gsubで複数の文字パターンを置換する&後方参照する場合 - 訳も知らないで
    crist18
    crist18 2014/10/16
    “# バックスラッシュ+数字をシングルクォートで囲う "私は男です。".gsub(/^(.)は/, '\1とあなたは') #=>"私とあなたは男です。" #もしくは # ブロック内で処理 "私は男です。".gsub(/^(.)は/) {$1 + "とあなたは"} #=>"私とあなたは男で
  • Amazon.co.jp: Rails Way: Obie Fernandez (著), クイープ (翻訳): 本

    Amazon.co.jp: Rails Way: Obie Fernandez (著), クイープ (翻訳): 本
    crist18
    crist18 2014/10/16
    Rails Way
  • DESIGN WAVE MAGAZINE コラム 伊藤(5)

    ソフトウェア開発の世界では,「ウォークスルー」は,プログラム・コードの品質を高める有効な手段であると認識されている.さらに,設計チーム全体の知識の底上げや,リスクの回避にも役立つ.しかし,やりかたを誤ると,たちまち膨大な時間のムダに終わってしまう.そうしないためには,実行するにあたって,参加者の心理的な側面に気を配らなくてはならない. ここでは,ハードウェア記述言語(HDL)を利用しているハードウェア設計者にとっても重要となるであろう「ウォークスルー」の考え方を紹介する. ●たんなる確認行為ではない ソフトウェア開発の世界で,ウォークスルーの考え方が提唱されたのは,ずいぶんと昔のことだ.ウォークスルーに関する名著であるエドワード・ヨードンの『ソフトウェアの構造化ウォークスルー』1)の原書(第1版)が1977年に発行されている.それだけ実績のある手法と言える. ウォークスルーは,もともと「演

    crist18
    crist18 2014/10/16
    ウォークスルー。レビューとどう違う?
  • 礼儀正しさ重要(Good Manners Matter 日本語訳)

    以下の文章は、Rich Bowen による Good Manners Matter(Open Advice に収録)の日語訳である。 Rich Bowen は、約15年もの間フリー/オープンソースソフトウェアに携わってきた。その時間の大半は Apache HTTP Server に費やしてきたが、PerlPHP やいろんなウェブアプリケーションにも取り組んできた。彼は『Apache Cookbook』や『The Definitive Guide to Apache mod_rewrite』他いろんなの著者であり、様々な技術カンファレンスに頻繁に参加している。 僕は2000年の9月に Apache HTTP Server のドキュメンテーションプロジェクトに携わり出した。少なくとも、僕が初めてドキュメントをコミットしたのはそのときだった。それ以前は電子メールでいくつかパッチを登録し

    crist18
    crist18 2014/10/16
    GMM
  • 今はinjectよりもtapだよね〜 - http://rubikitch.com/に移転しました

    tapかわいいよtap - http://rubikitch.com/に移転しました 俺も含めたinject厨は、Ruby 1.8.7からtapへ鞍替えしたほうがいいかもしれない。 たとえば、簡単な例題として、1〜6のうちで偶数の二乗を集めるコードを示そう。 (1..6).select{|x| x % 2 == 0}.map{|x| x*x} # => [4, 16, 36] (1..6).inject([]){|a,x| a << x*x if x % 2 == 0; a} # => [4, 16, 36] [].tap{|a| (1..6).each{|x| a << x*x if x % 2 == 0}} # => [4, 16, 36] 一番上がselectとmapを使った関数プログラミング的な方法。短くて明確だけど強いていえば余計なオブジェクトが生成される上、ループが2回になる欠

    今はinjectよりもtapだよね〜 - http://rubikitch.com/に移転しました
    crist18
    crist18 2014/10/16
    inject tap
  • ちょっとわかりにくいけど非常に便利なinjectメソッド - 勉強日記

    ruby の inject で配列の合計や最小要素を簡単に求められるんだけど、慣れていないと理解しにくい。そこで、できるだけわかりやすく説明したいと思う。 injectの使用例 Ruby初心者が配列の和を求めたいと思ったとき、最初に思いつくのは以下のようなコードだろう。 sum = 0 [1, 2, 3, 4, 5].each do |i| sum += i end sum # => 15 変数sumを用意し、eachで配列の中身を順にsumに足していく。Rubyを知っている人なら誰でも理解できると思う。 これをinjectを使って次のように書ける。 [1, 2, 3, 4, 5].inject(0) { |sum, i| sum + i } # => 15 簡潔だが、injectを知らないといまいちピンとこないのではないだろうか。ちなみに、Ruby1.8.7以降であれば更に簡単に書ける。

    ちょっとわかりにくいけど非常に便利なinjectメソッド - 勉強日記
    crist18
    crist18 2014/10/16
    ruby inject まとめ
  • 復習 Ruby: [1, 2, 3].sum ではなく,[1, 2, 3].inject(:+) と書く.

    復習 Ruby: [1, 2, 3].sum ではなく,[1, 2, 3].inject(:+) と書く. 数値が Array に格納されていて,その合計を計算したいときに sum したくなることがある. たとえば,次のように. a = [1, 2, 3] a.sum # ~> -:2:in `': undefined method `sum' for [1, 2, 3]:Array (NoMethodError) しかし,このように,Array#sum というメソッドは無いので,NoMethodError になる. Enumerable#inject(symbol)こんなときに,Ruby なら Enumerable#inject(symbol) を使う. a = [1, 2, 3] a.inject(:+) # => 6 ここで,a.inject(:+) は, 1 + 2 + 3 と同じ

    復習 Ruby: [1, 2, 3].sum ではなく,[1, 2, 3].inject(:+) と書く.
    crist18
    crist18 2014/10/16
    “a = [1, 2, 3] a.inject(:+) ”