【发布时间】:2014-02-03 18:58:55
【问题描述】:
我已经编写了几个函数来输入字符串并使用不同的正则表达式来搜索字符串中的模式。所有函数都在相同的输入 [string] 上工作。将所有这些功能组合成一个功能的最佳方法是什么?
我曾尝试将所有正则表达式组合成一个正则表达式,但遇到了退化问题。从而该模式适合多个正则表达式并输出不正确的结果。接下来,我尝试使用线程箭头 -> 和 ->> 但无法让它们工作。我相信这可能是正确的选择,但无法使功能正常运行。所以我无法检验我的假设。
作为两个函数组合的示例,请考虑以下内容:
(defn fooip [string]
(re-seq #"\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b" string))
和
(defn foophone [string]
(re-seq #"[0-9]{3}-?[0-9]{3}-?[0-9]{4}" s))
【问题讨论】:
-
你想通过组合它们来完成什么?有一个功能,可以匹配电话或IP?还是别的什么?
-
目标是拥有一个可以搜索两种模式的函数。此外,在 Clojure 中优化组合多个函数的通用格式。