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

4

我有一个函数remove,它接受一个正则表达式字符串和另一个字符串作为参数。它会从第二个字符串中删除与正则表达式匹配的所有内容,并返回处理后的字符串。

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

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

这个程序将会逐渐增长,其中有很多正则表达式需要调用,而且每一个正则表达式可能会在整个程序中被多次使用。我是否应该像这样存储它们:
myregex = "(my|a)?string"

或者我应该创建一个数据类型或其他什么东西吗?
谢谢。
2个回答

5

一种方法是使用部分应用,例如:

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

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

removeName = remove "<name_regex>"

等等。然后您可以像这样使用这些函数

removeName "myname"

4

如果性能是一个问题,那么您打算多次使用的任何正则表达式都应该编译一次并以编译形式存储。 有关详细信息,请参见makeRegex的文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接