HatenaNotationConverter(勝手に命名)

JAVA正規表現を使う方法はjava.util.regexをimportするか
org.apache.oro.text.perlをimportする2種類あるらしー。
今回はperl正規表現にも慣れておこうと後者で実装。
入力してある文章を表示させるときに噛ませたいだけなので
getAsObject()は放置(こっちは入力時のConverter)して
getAsString()のみいぢくることに。
まずはスーパープレ記法にちゃれんじ。
一番悩んだのが正規表現でmatchした文字列の中のさらに特定の字を指定すること。
とりあえずはこんな風にしてみた。

public String getAsString(FacesContext context, UIComponent component,
			Object value) throws ConverterException {
		String entryBody = (String) value;
		Perl5Util reg = new Perl5Util();
		while (reg.match("/>\\|\\|([^\\|]*)\\|\\|</s", entryBody)) {
			MatchResult mr = reg.getMatch();
			String pre = reg.preMatch();
			String post = reg.postMatch();
			String superPre = mr.group(0);
			superPre = reg.substitute("s/</&lt;/g", superPre);
			superPre = reg.substitute("s/\"/&quot;/g", superPre);
			superPre = reg.substitute("s/>/&gt;/g", superPre);
			superPre = reg.substitute("s/&gt;\\|\\|/<pre class='superPre'>/g", superPre);
			superPre = reg.substitute("s/\\|\\|&lt;/<\\/pre>/g", superPre);
			entryBody = pre + superPre + post;
		}
}

>||〜||<の中の「<」と「>」を指定したかったわけですが、コレ一文づつじゃ無理なのかなあ。
次の課題はリスト記法だ…。