Parsec如何在字符串中查找“匹配项”

肖恩·克拉克·赫斯

如何使用parsec解析字符串中所有匹配的输入并丢弃其余的输入?

示例:我有一个简单的数字解析器,如果我知道分隔数字的原因,我可以找到所有数字:

num :: Parser Int
num = read <$> many digit

parse (num `sepBy` space) "" "111 4 22"

但是,如果我不知道数字之间是什么怎么办?

"I will live to be 111 years <b>old</b> if I work out 4 days a week starting at 22."

many anyChar 不能用作分隔符,因为它消耗了所有内容。

那么,如何获得与被我要忽略的事物包围的任意解析器匹配的事物?


编辑:请注意,在实际问题中,我的解析器更加复杂:

optionTag :: Parser Fragment
optionTag = do
    string "<option"
    manyTill anyChar (string "value=")
    n <- many1 digit
    manyTill anyChar (char '>')
    chapterPrefix
    text <- many1 (noneOf "<>")
    return $ Option (read n) text
  where
    chapterPrefix = many digit >> char '.' >> many space
联合会

对于任意解析器myParser,这很容易:

solution = many (let one = myParser <|> (anyChar >> one) in one)

这样写可能会更清楚:

solution = many loop
    where 
        loop = myParser <|> (anyChar >> loop)

本质上,这定义了一个递归解析器(称为loop),它将继续搜索可以解析的第一件事myParsermany只会彻底搜索直到失败,即:EOF。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

java - 如何在两个数组中查找字符串之间的匹配项

来自分类Dev

如何在字符串中查找重复项?

来自分类Dev

如果模式是字符串字符,如何查找匹配项?

来自分类Dev

JAVA:如何在嵌套的JSONString中查找子字符串的所有匹配项并替换为某些文本

来自分类Dev

查找字符串中的部分匹配项

来自分类Dev

查找字符串中的所有匹配项

来自分类Dev

如何使用python Regex查找给定字符串中的所有完全匹配项

来自分类Dev

如何查找在正则表达式中不包含字符串的匹配项

来自分类Dev

在C ++ 11中,如何在以给定字符串开头的字符串向量中查找并返回所有项?

来自分类Dev

如何在VBA中搜索整个单词而不是字符串中的部分匹配项

来自分类Dev

如何在字符串数组中查找ArrayList项的索引

来自分类Dev

如何在正则表达式匹配项中替换字符串

来自分类Dev

如何在包含多个匹配项的字符串包含中合并大熊猫?

来自分类Dev

您如何在Chrome中的页面上搜索短语?(不是字符串匹配项)

来自分类Dev

如何在带有正则表达式的URL中查找精确字符串的第一个匹配项

来自分类Dev

Excel 2016:如何在另一列的单元格列中查找所有超字符串匹配项?

来自分类Dev

如何获得字符串中可能重叠的匹配项

来自分类Dev

如何在Rebol中查找与模式匹配的所有子字符串

来自分类Dev

如何使用std :: regex查找字符串中的下一个匹配项?

来自分类Dev

在字符串中查找重复项

来自分类Dev

如何在基于字符的字符串中查找短语

来自分类Dev

如何在字符串中查找特定字符的位置

来自分类Dev

如何在字符串中查找不连续的字符?

来自分类Dev

如何在字符串中查找无效字符或符号

来自分类Dev

如何替换字符串中的匹配项并索引每个匹配项

来自分类Dev

Bash:如何获取字符串中匹配项的完整子字符串?

来自分类Dev

使用parsec查找字符串中的子字符串

来自分类Dev

在段落中查找匹配的字符串

来自分类Dev

从基于python中的查找模式的字符串中获取所有匹配项

Related 相关文章

  1. 1

    java - 如何在两个数组中查找字符串之间的匹配项

  2. 2

    如何在字符串中查找重复项?

  3. 3

    如果模式是字符串字符,如何查找匹配项?

  4. 4

    JAVA:如何在嵌套的JSONString中查找子字符串的所有匹配项并替换为某些文本

  5. 5

    查找字符串中的部分匹配项

  6. 6

    查找字符串中的所有匹配项

  7. 7

    如何使用python Regex查找给定字符串中的所有完全匹配项

  8. 8

    如何查找在正则表达式中不包含字符串的匹配项

  9. 9

    在C ++ 11中,如何在以给定字符串开头的字符串向量中查找并返回所有项?

  10. 10

    如何在VBA中搜索整个单词而不是字符串中的部分匹配项

  11. 11

    如何在字符串数组中查找ArrayList项的索引

  12. 12

    如何在正则表达式匹配项中替换字符串

  13. 13

    如何在包含多个匹配项的字符串包含中合并大熊猫?

  14. 14

    您如何在Chrome中的页面上搜索短语?(不是字符串匹配项)

  15. 15

    如何在带有正则表达式的URL中查找精确字符串的第一个匹配项

  16. 16

    Excel 2016:如何在另一列的单元格列中查找所有超字符串匹配项?

  17. 17

    如何获得字符串中可能重叠的匹配项

  18. 18

    如何在Rebol中查找与模式匹配的所有子字符串

  19. 19

    如何使用std :: regex查找字符串中的下一个匹配项?

  20. 20

    在字符串中查找重复项

  21. 21

    如何在基于字符的字符串中查找短语

  22. 22

    如何在字符串中查找特定字符的位置

  23. 23

    如何在字符串中查找不连续的字符?

  24. 24

    如何在字符串中查找无效字符或符号

  25. 25

    如何替换字符串中的匹配项并索引每个匹配项

  26. 26

    Bash:如何获取字符串中匹配项的完整子字符串?

  27. 27

    使用parsec查找字符串中的子字符串

  28. 28

    在段落中查找匹配的字符串

  29. 29

    从基于python中的查找模式的字符串中获取所有匹配项

热门标签

归档