在HTML中搜索最大匹配对的字符串

时间:2015-11-11 11:57:30

标签: regex haskell pattern-matching

我感兴趣的是使用Haskell解析HTML文件以搜索标签中的字符串,例如,我想在<body> ... </body>之间获取字符串。我试过了

  getValue :: String -> [String]
  getValue [] = []
  getValue '<':x:'>':y:'<':'/':x:'>':z = y:[]:getValue z

如果有的话,它将列举所有案例。但我感兴趣的是那些不是任何其他输出元素子集的最大的那些。我该怎么做?

1 个答案:

答案 0 :(得分:2)

您编写的代码仅匹配 包含1个字符正文的1个字符的标记名称。

<p>x</p>          Matches
<ul>y</ul>        Does not match
<p>xyz</p>        Does not match
<body>x</body>    Does not match

我猜这根本不是你想要的。

您不能使用模式匹配来匹配任意正则表达式;你需要使用正则表达式库。在我看来,你的选择是:

  • 使用真正的HTML或XML解析库。
  • 使用解析器构造库构建自定义解析器。
  • 使用真正的正则表达式库。 (见this。)
  • 手动编写一个简单的状态机。

您选择哪个选项取决于您要执行的操作。你真的想“解决”这个问题吗,或者你只是想学习如何在Haskell中做事?