我似乎無法順利建立在Haskell正則表達式,我想要做的是轉換這個字符串(這一段文字相匹配的URL)「原始」的字符串在Haskell的正則表達式
\b(((\S+)?)(@|mailto\:|(news|(ht|f)tp(s?))\://)\S+)\b
爲正則表達式,但問題是我一直在ghci中
Prelude Text.RegExp> let a = fromString "\b(((\S+)?)(@|mailto\:|(news|(ht|f)tp(s?))\://)\S+)\b"
<interactive>:1:27:
lexical error in string/character literal at character 'S'
我猜它的失敗,因爲Haskell的不理解\S
作爲轉義代碼收到此錯誤。有什麼辦法可以解決這個問題嗎?
在Scala中,你可以用3個雙引號括住一個字符串,我想知道你是否可以在Haskell中實現類似的東西?
任何幫助,將不勝感激。
根據http://stackoverflow.com/questions/3792267/haskell-do-literal-backslas-always-have-to-be-escaped-in-a-string haskell找到的答案haskell沒有任何語法原始的字符串,所以你必須像@augustss所說的那樣逃避每個反斜槓。 – 2011-05-25 10:24:41
..我相信你必須使用pcre-light或regex-pcre來獲得一個知道\ S的實現。除了perl-like引擎外,還有類似posix的引擎,例如regex-tdfa(不能識別\ s)。 – 2011-05-25 11:15:33