gpt4 book ai didi

regex - Haskell 中的 PCRE - 什么,在哪里,如何?

转载 作者:行者123 更新时间:2023-12-03 13:50:04 24 4
gpt4 key购买 nike

多年来,我一直在寻找一些关于 Haskell 正则表达式的文档或教程。 HaskellWiki page 上没有有用的信息.它只是给出了神秘的信息:

Documentation
Coming soonish.

有一个简短的 blog post我发现这很有帮助,但是它只处理 Posix 正则表达式,而不是 PCRE。

我已经使用 Posix regex 几个星期了,我得出的结论是,对于我的任务,我需要 PCRE。

我的问题是我不知道在 Haskell 中从哪里开始 PCRE。我已经下载了 regex-pcre-builtin与 cabal ,但我需要一个 简单匹配程序示例帮助我开始。
  • 是否可以实现多线匹配?
  • 我能以这种格式取回比赛吗:[(MatchOffset,MatchLength)] ?
  • 我还可以使用哪些其他格式恢复比赛?

  • 非常感谢您的帮助!

    最佳答案

    还有regex-applicative我写的。

    这个想法是,您可以为正则表达式的每个部分分配一些含义,然后组合它们,就像您使用 Parsec 编写解析器一样。

    这是一个示例——简单的 URL 解析。

    import Text.Regex.Applicative

    data Protocol = HTTP | FTP deriving Show

    protocol :: RE Char Protocol
    protocol = HTTP <$ string "http" <|> FTP <$ string "ftp"

    type Host = String
    type Location = String
    data URL = URL Protocol Host Location deriving Show

    host :: RE Char Host
    host = many $ psym $ (/= '/')

    url :: RE Char URL
    url = URL <$> protocol <* string "://" <*> host <* sym '/' <*> many anySym

    main = print $ "http://stackoverflow.com/questions" =~ url

    关于regex - Haskell 中的 PCRE - 什么,在哪里,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7882512/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com