今日は夏の正規表現祭りに参加していますので、自分用にメモします。
ustreamもあります!
(Irr|R)egular Expressions / @dankogaiさん
- 「えろい」のではなく「えらい」
- 「命賭けるな、コード書け」
- 正規表現の使い過ぎに注意
- $str eq 'XXX' or $str eq 'YYY' を /^(XXX|YYY)$/ に書き直したくなる → やりすぎ
- もしくはハッシュを使ったり、5.10 でスマートマッチ ~~ を使ったり。
- メールアドレスの検証の正規表現 → 適当に書くと不完全。完全に書くとすごく長い
- Regexp::Common → 便利な正規表現集。ipv4とか。
- Regexp::Assemble → alternations (xxx|yyy|zzz) をTRIE最適化する。
- ただし、5.10 以降は自動でTRIE最適化してくれる
- マッチした部分を返す機能がある
- s///sexsexsex → オプションを重複させても、一回指定したのと一緒
- s///mixi も同じ話。
- ただし、eだけは重複して効果がある。
- 正規表現はPerlの、最高ともだち → 言語に組み込まれてるので自然
- 時間が過ぎたけど小ネタ
正規表現 -もう一つのバベルの塔- - 木村浩一さん
スライドがレジュメしかない、小話形式でした。これはこれで面白い。
Hello, re::engine! / @__gfx__ さん
- HTML::FillInForm::Lite → 正規↑表現↓*2で実装した高速版
- Text::Xslate → tokenizerを正規↑表現↓で実装したもの
- re::engine とは? → 正規↑表現↓の実装を入れ替える仕組み。2006年。
- re::engine::RE2を使った例 → 素数判定する正規↑表現↓
- re::engineの利点 → コードの修正不要、CのAPIなので早い、限界を突破できる
- 仕組み → 関数ポインタによる多態
- フック → コンパイル、実行、最適化、キャプチャ系
- 現在CPANにあるもの
- Q. (性器と混同しなくて)アクセントがいいですね!
- A. なんと表現したらよいものか
正規表現の限界 / @sinya8282 さん
スライドはこちら。
- ラボユースで正規表現エンジンを作っている。Mongerってなに?
- 複雑な正規表現を見てニヤニヤしたい
- (Pureな)正規表現の演算
- 連接、選択|、閉包* の3つだけ
- 糖衣 → .^$[]{}()?+
- 簡単? 否定の正規表現を考える
- 否定の表現が難しい理由
- 正規表現の否定表現を生成するツールがないっぽい → 実装した!
- /abc/ や /abc|efg/ や /.*abc.*/の答え合わせ → 複雑...
- /.*a.{2}/ → すんごい量
- 正規表現で表現できないもの → 文脈自由文法
- "Pureな"正規表現で再帰をしてみる
- マッチ回数より表現の長さ。140文字で
- 上限は、「140 - 1 / 2」 = 69回
- 35(2^70-1) (約40ゼタ文字)
- 他に話したかった話
- Q. 否定の生成ツールは作った?
- A. 公開済
- Q. Pureにこだわる理由は?
- A. DFAで表現できる。最適化や並列化ができるかも。今日は複雑なものが見たかっただけ。