• 作成日時:
  • 更新日時:

Haskellのregex-compatはUnicode文字に対応していないのでregex-compat-tdfaを使いましょう

タイトルにwbr要素を使ってカンマの後に改行を行ってもらうようにしました

titleWbr = field "title_wbr"
    (\item -> (\mTitle -> R.subRegex (R.mkRegex ",") (fromJust mTitle) ",<wbr>") <$>
        getMetadataField (itemIdentifier item) "title")

のように<wbr>をカンマの後に挿入するようにしたのですが,カンマの存在しない場所に何故かカンマが挿入されてしまったり,一部の文字が削除されてしまっていることに気がつきました.

何故だろうと思い,他の正規表現パッケージを見てみることにしました.

regex-compat-tdfa :: Stackage Serverによると,

regex-compat can't use Unicode characters correctly because of using regex-posix. This is not good for Unicode users.

と書いてあります.

regex-compatはUnicode文字を正しく処理できないようですね.

なので,依存からregex-compatを削除して,regex-compat-tdfaを追加したら正しく処理されるようになりました.

探してみると同じように詰まっていた人が居たようですね.haskell-ja > Archives > 2015/05/04

regex-compatを使うのはやめましょう.