Me parece estar teniendo problemas para crear una expresión regular en Haskell, lo que estoy tratando de hacer es convertir esta cadena (que coincide con una URL en un trozo de texto)"crudo" cadena en Haskell para la expresión regular
\b(((\S+)?)(@|mailto\:|(news|(ht|f)tp(s?))\://)\S+)\b
en una expresión regular, el problema es que siguen dando este error en 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'
supongo que está fallando debido a Haskell no entiende \S
como un código de escape. ¿Hay alguna forma de evitar esto?
En Scala puede rodear una cadena con 3 comillas dobles, me preguntaba si podría lograr algo similar en Haskell.
Cualquier ayuda sería apreciada.
según las respuestas encontradas en http://stackoverflow.com/questions/3792267/haskell-do-literal-backslashes-todo-algo-que-tiene-en-escalado-en-una-cadena Haskell no tiene ninguna sintaxis para cadenas crudas por lo que debe escapar de cada barra invertida, como dijo @augustss. –
... y creo que debes usar pcre-light o regex-pcre para obtener una implementación que sepa de \ S. Además de los motores similares a Perl, hay motores similares a posix como regex-tdfa (que no reconoce \ s). –