在Haskell中存储正则表达式字符串的最佳方法是什么?

时间:2011-10-17 15:01:08

标签: regex haskell coding-style

我有一个函数remove,它将正则表达式作为字符串和另一个字符串。它从第二个字符串中删除与正则表达式匹配的任何内容并返回它。

目前,我正在使用文字正则表达式字符串调用remove函数,例如:

remove "(my|a)?string" "Test string" -- returns "Test "

这个程序将会增长,并且会有很多正则表达式要调用,并且每个程序都可以在整个程序中多次使用。我应该像这样存储它们:

myregex = "(my|a)?string"

或者我应该制作数据类型还是别的什么?

由于

2 个答案:

答案 0 :(得分:5)

一种选择是使用部分申请,如:

remove regex str = <generic code to remove the regex expression from string>

对于您想要应用的每种特定类型的正则表达式,您可以编写如下函数:

removeName = remove "<name_regex>"

等等。然后你可以使用像

这样的功能
removeName "myname"

答案 1 :(得分:4)

如果需要考虑性能,那么您打算多次使用的任何regexen都应编译一次并以编译形式存储。另请参阅makeRegex的文档。