タグ

regexpに関するkenkitiiのブックマーク (4)

  • 新しくないゲームなどのブログ: アスキーアート文字列の判定

    新しくないゲームなどのブログ ノンビリと古めのゲーム関連の話題を書きつづるブログ。 …のつもりだったが、やっぱりなんでも適当に書くブログへと変更。。 私自身はmacユーザーだが、macユーザーの悩みの種の1つであるのが 「アスキーアート(AA)をmacのブラウザで見るとずれてうまく表示できない」 という問題。 macでは表示されるフォントに対し、鬼のようにアンチエイリアスがかかるためそうなる。 これに対し、mac2chビューアの中にはアスキーアートを正常に表示させる機能を導入しているものがある。 仕組みとしては、”アスキーアートとして判定される文字列”であると判定した場合、その文字列の表示はアンチエイリアスを解除した等幅フォントで行う、というもののよう。 私はBathyScapheというオープンソースの2chビューアを愛用しており、これがその機能を備えているため、どのような判定を行って

  • 正規表現のoオプションにPerlの暗黒面を見た - はこべにっき ♨

    Perlの正規表現のoオプションてご存じでしょうか? うちはあまり使ったことがなかったのですが,効率のよい正規表現処理を行うときには便利なオプションです. oオプションを使うと,その正規表現のコンパイルが1回しか行われなくなります.たとえば,正規表現の評価が繰り返しのなかで現れると,コンパイルが何度も行われて効率が悪くなります.そういったときにoオプションを付与しておけば,正規表現コンパイルのオーバーヘッドを最小限にとどめることができます. chomp(my $pattern = <>); for my $n (0..100000000000) { # すごく回数の多いループ # oをつければ正規表現がコンパイルされるのははじめの1回だけなので安心 if ($n =~ m/^$pattern$/o) { say "match!"; } } 正規表現が静的な場合は,Perlはこのような最適化

    正規表現のoオプションにPerlの暗黒面を見た - はこべにっき ♨
  • 巨大な正規表現で解析するのは快感 - 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