1
在Clojure函数中耦合多个正则表达式的最佳方式是什么?我相信功能会从这样开始:Clojure中的多个正则表达式
(defn foo [x]
(re-seq #"some means to combine multiple regex")
但我不清楚这是否会起作用,或者这样的功能的效率。为了提供可能的正则表达式耦合的例子,可以考虑一个搜索域名和IP的函数。对于域名我会使用一个正则表达式这样:
(re-seq #"\b([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}\b" x)
和IP:
(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")
这工作的大部分时间,但如果一个模式的采用了编号捕获组?例如'(。)\ 1 {5}',用于连续六次匹配任何字符?你添加的额外的parens搞乱了组编号;你需要使用'(?:'而不是'(')。 – amalloy