巨大な正規表現で解析するのは快感
複雑な構造のテキストを巨大な正規表現で解析するのって快感だよね。
こんな感じで正規表現の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\d:\d\d) # $3: end \s (.+?) # $4: genre ">(.+?)< # $5: title .+?\n (?: \s+ <span\sclass="style_subtitle">(.*?)< # $6: subtitle .+?\n )? \s+ <span\sclass="style_corner">(.*?)< # $7: corner /xm html.scan(regexp, &block) end