タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

regexpとrubyに関するkenkitiiのブックマーク (2)

  • 巨大な正規表現で解析するのは快感 - http://rubikitch.com/に移転しました

    複雑な構造のテキストを巨大な正規表現で解析するのって快感だよね。 こんな感じで正規表現のxオプションで正規表現を複数行に分けて書けるようにし、コメントも書けるようにする。そして、インデントして細かく記述していく。そしてString#scan一発で情報を細切れにする。何度も正規表現マッチをするのではなくて、巨大な正規表現で複雑なテキストを一撃で仕留める。やってみるとわかるがこいつぁ快感だ。 正規表現の底力を知った! def scan_html(html, &block) regexp = / <span\sclass="style_title"><a\s.+?href=".+? hsid=\d{8} # yyyymmdd (\d{4}) # $1: channel id \d{3} # program id ".+? title=" (\d\d:\d\d) # $2: start - (\d

    巨大な正規表現で解析するのは快感 - http://rubikitch.com/に移転しました
  • 正規表現の先読みについて解説してみる - http://rubikitch.com/に移転しました

    先読み正規表現について、この前やっと理解できた。Rubyリファレンスマニュアルではこんな説明になっている。 (?= ) 先読み(lookahead)。パターンによる位置指定(幅を持たない) (?=re1)re2 という表現は、re1 と re2 両方にマッチするものにマッチする正規表現です。 re1(?=re2) という表現は、後に re2 とマッチする文字列が続く、正規表現 re1 です。 p /foo(?=bar)/ =~ "foobar" # => 0 p $& # => "foo" (bar の部分の情報はない) (?! ) 否定先読み(negative lookahead)。パターンの否定による位置指定(幅を持たない) (?!re1)re2 という表現は、re1 にマッチしないが re2 にはマッチする正規表現です。 # 000 を除く 3 桁の数字 re = /(?!000)\

    正規表現の先読みについて解説してみる - http://rubikitch.com/に移転しました
  • 1