haskell-ja > Archives > 2015/05/04

2015/05/04 13:19:55 UTCとおる。
#
すみません、ちょっと正規表現についてお聞きしたいんですが、
#
import System.IO
import Text.Regex

main = do
  mapM_ putStrLn $ splitRegex (mkRegex "[。]") "あい、うえお、かき。くけ。一こ、さし。すせそ。たち、つ。てと。"
#
こういうコードを書いてみると、なぜか漢数字の「一」の後ろで split してくれません。漢数字の「二」だと大丈夫でした。
#
./regextest
あい、うえお、かき
くけ
一こ、さし。すせそ。たち、つ。てと。
#
環境は、
#
$ aptitude show haskell-platform
Package: haskell-platform                
State: installed
Automatically installed: no
Version: 2013.2.0.0.debian12
#
なぜ一だけおかしくなっちゃうんでしょうか?
2015/05/04 13:45:14 UTCとおる。
#
http://en.wiktionary.org/wiki/%E4%B8%80 漢数字の「一」のコードポイントは U+4E00 なので、もしや 00
#
でおわる文字が苦手なのかと思って、試しに U+5E00 の「帀」でためしてみたところ、同様の結果になりました。
2015/05/04 13:49:03 UTCnotogawa
#
regex-compat can't use Unicode characters correctly because of using regex-posix.
#
https://hackage.haskell.org/package/regex-compat-tdfa
2015/05/04 13:54:23 UTCとおる。
#
あらー。そうですか。。。ありがとうございます。
#
Haskell のパッケージの使い方がまったくわかってないんですが、これは regex-compat-tdfa というのを導入すれば解決できるということでしょうか?
2015/05/04 13:58:58 UTCnotogawa
#
そうですね.regex-compat-tdfaのText.Regexなら大丈夫でした
2015/05/04 13:59:24 UTCとおる。
#
おーありがとうございます。ためしてみます!