10

Scala では、次のような正規表現パターン マッチがあります。

val Regex = """(\d{4})/(\d{2})/(\d{2})""".r
val Regex(year, month, day) = "2013/01/06"

結果は次のとおりです。

year: String = 2013
month: String = 01
day: String = 06

Haskellで同様の結果を達成するにはどうすればよいですか? つまり、グループを含む正規表現を照合して、グループを識別子に割り当てることはできますか?

4

2 に答える 2

16

これは私のために働きます:

Prelude Text.Regex.Posix> "2013/01/06" =~ "([0-9]+)/([0-9]*)/([0-9]*)" :: (String,String,String,[String])
("","2013/01/06","",["2013","01","06"])

(OSXではghci7.4.2)

于 2013-01-06T23:01:32.383 に答える
10

Chris's answerを拡張すると、次のように機能し、私の Scala バージョンに似ています。

ghci> :m +Text.Regex.Posix
ghci> let (_, _, _, [year, month, day]) ="2013/01/06" =~ "([0-9]+)/([0-9]*)/([0-9]*)" :: (String,String,String,[String])
ghci> year
"2013"
ghci> month
"01"
ghci> day
"06"
于 2013-01-07T15:23:32.157 に答える