Haskell中的正则表达式和字符串库

ram*_*ion 5 regex string haskell

我正在尝试通过使用它来编写附带的脚本等来将Haskell引入我的日常生活中.

readProcess获取外部命令的结果很方便,但我发现自己正在搜索处理String结果.我来自红宝石,其中正则表达是一流的,所以我习惯将它们作为工具.

我应该阅读哪些库来在haskell中进行字符串处理?搜索匹配的行,拉出字符串的匹配区域,等等?

Jon*_*han 5

我发现这是一个很好的起点:http://www.serpentine.com/blog/2007/02/27/a-haskell-regular-expression-tutorial/ 它只涵盖基础知识,没有高级主题,但它是伟大的开始恕我直言.

注意事项:

  • haskell中的正则表达式不同,因为它们具有重载的返回类型.这意味着您可以从正则表达式匹配中提取许多不同类型的东西.(Bool,String,[String]等...)根据您使用的返回类型,它会返回一个不同类型的答案(正则表达式是否匹配,匹配测试,所有匹配的子组,等等.)这是使用一些相当复杂的类型类巫术来完成的.上面的链接演示了基本类型,这里有一个更完整的列表
  • haskell实际上有多个标准模块提供正则表达式支持(奇怪但真实).上面的教程显示了POSIX模块,因为它是haskell的标准配置.如果你有cabal,你也可以很容易地安装其他正则表达式模块并使用它们.有一个pcre binding(regex-pcre),以及一些通过DFA(regex-dfa等等)工作的包.使用如下命令安装cabal install regex-pcre ,你应该很高兴.
    • (模块有一个标准化的界面,区别主要在于实现和正则表达式的风格)
  • IS在Haskell一个正则表达式对象,但你并不真的需要它使用=〜或= ~~匹配运算符.(只需使用字符串,即可自动进行转换).如果您的任务足够复杂以至于您需要第一类解析对象,请考虑查看Parsec,如其他答案中所述.

免责声明:我自己只是用户pcre,所以我对其他软件包的了解并不多.