Haskell

Haskellで日本語を正規表現で置換

More than 1 year has passed since last update.

Haskell初心者。練習として、マークダウンのパーサーを作成中。

日本語の置換でかなりはまったが、 utf8-string パッケージでうにゃうにゃしたらいけた。

main.hs
import Text.Regex
import Codec.Binary.UTF8.String

sub :: String -> String -> String -> String
sub subject re replace = decodeString $ subRegex (mkRegex re) (encodeString subject) replace

main :: IO ()
main = do
    putStrLn $ sub "- Slackに通知する" "^- (.+)$" "<li>\\1</li>"
% runghc main.hs 
<li>Slackに通知する</li>             

encodeStringdecodeString で挟まないと、うまく置換できない。