高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

正規表現で行こう

 現在自由帳の文章を移行中です。自由帳のような大見出しがあって、タイトルがあって、それをクリックすると記事が見られて…という構造の文章は、TMemo.plというライブラリにやってもらいます。で、はてなのような簡易タグを展開する機能付き(こっちは、document.plを使って展開。これは掲示板にも流用・・・できるかな)。論理修飾は多用することになりそうなので、論理修飾展開用のタグをメインに。

 この処理は正規表現を思いっきり使わせてもらってます。

  s% \[<\s*(.+?)\s*>\]    % <dfn>$1</dfn>             %xg;
  s% \[\*\s*(.+?)\s*\*\]  % <kbd>$1</kbd>             %xg;
  s% \["\s*(.+?)\s*"\]    % <q>$1</q>                 %xg;
  s% \[r:*(.+?);(.+?)\]   % <ruby><rb>$1</rb><rp>(</rp><rt>$2</rt><rp>)</rp></ruby>%xg;

こんな感じでOK 便利です。そういえばはてなも、パーサコンポーネントなどではなく、ほとんどを正規表現でやってるという噂ですから、さすが正規表現 ですね。
さて、後半の置き換え部分ですが、ここではオプションでxをつけても、空白文字を無視しないようです(ですので上のコードは、大量の半角スペースも一緒に置き換えてしまいます)、まあHTMLでは空白文字を表示しないし、別にいいやと思ってそのまんまにしてますけど(^。^;)ソースをみるとかなりすごいことに。
掲示板に流用した場合の処理時間はどうだろう?それだけが気がかりですが…。


 もう内容自体が古くなってるのもあるので、いくつかは削除しなければいけなさそうですね。追加は後々。