Pattern matching a regex pattern in Haskell

我的梦境 提交于 2019-12-21 04:20:12

问题


In Scala, I have a regular expression pattern match like this:

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

The result is:

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

How can I accomplish a similar result in Haskell? In other words, can I match a regular expression containing groups and assign the groups to identifiers?


回答1:


This works for me:

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

(ghci 7.4.2 on OS X)




回答2:


Expanding on Chris's answer, the following works and is similar to my Scala version:

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"


来源:https://stackoverflow.com/questions/14187577/pattern-matching-a-regex-pattern-in-haskell

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!