現在自由帳の文章を移行中です。自由帳のような大見出しがあって、タイトルがあって、それをクリックすると記事が見られて…という構造の文章は、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では空白文字を表示しないし、別にいいやと思ってそのまんまにしてますけど(^。^;)ソースをみるとかなりすごいことに。
掲示板に流用した場合の処理時間はどうだろう?それだけが気がかりですが…。
もう内容自体が古くなってるのもあるので、いくつかは削除しなければいけなさそうですね。追加は後々。