小编sun*_*ots的帖子

Clojure中的多个正则表达式

在Clojure函数中耦合多个正则表达式的最佳方法是什么?我相信这个函数会这样开始:

(defn foo [x]
(re-seq #"some means to combine multiple regex")
Run Code Online (Sandbox Code Playgroud)

但我不清楚这是否有效,或这种功能的效率.为了提供可能的正则表达式耦合的示例,可以考虑搜索域名和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)
Run Code Online (Sandbox Code Playgroud)

对于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")
Run Code Online (Sandbox Code Playgroud)

regex clojure clojure-contrib

1
推荐指数
1
解决办法
860
查看次数

Clojure中的正则表达式

我希望捕获的日期格式属于"word/DD/YYYY"模式的排列,其中单词对应于月份,即

(def months ["january" "January" "february" "February" "march" "March" "April" "april" "may" "May" "june" "June" "july" "July" "august" "August" "september" "September" "october" "October" "november" "November" "december" "December"])
Run Code Online (Sandbox Code Playgroud)

因此,上述模式的可能排列将是"DD/word/YYYY""YYYY/word/DD"和"YYYY/DD/word"

我尝试了一些方法

(def months-match (clojure.string/join "|" months))
(def months-str (str "(\\s*(" months-match ")")) 
(def moster (re-pattern  months-str))

(defn foomonths [s]
(map first (re-seq moster s)))
Run Code Online (Sandbox Code Playgroud)

计划在几天和几年内添加正则表达式

|[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d
Run Code Online (Sandbox Code Playgroud)

置换正则表达式不是问题.相反,它是将数月的单词制定成正则表达式结构的过程,其中日期和年份以数字表示.

regex clojure clojure-contrib

1
推荐指数
1
解决办法
428
查看次数

在Clojure随机漫步

我为随机游走编写了以下代码,它从{-1,1}中提取随机值.

(defn notahappyfoo [n]
(reverse (butlast (butlast (reverse (interleave (take n (iterate rand (- 0 1)))(take n (iterate rand 1))))))))
Run Code Online (Sandbox Code Playgroud)

但是,代码无法产生令人满意的行走.主要问题源于函数rand.它的下限是0,这迫使我写的尴尬代码.也就是说,函数交错最终导致步行中的狂变,因为值被迫从正变为负.使用此代码很难获得任何连续路径的感觉.

我相信在Clojure中应该有一个优雅的形式来构建这个步行.但我无法将正确的功能拼凑在一起以产生这样的行走.我想要构建的函数的目标包括随机数的下限和上限.在上面的代码中,我强制将区间-1设置为1.将此概括为-a和a将是很好的.此外,如何在-a和具有连续性概念的a之间形成随机实数(浮点)的集合?

random clojure clojure-contrib

1
推荐指数
1
解决办法
193
查看次数

将多个功能组合到一个功能中

我编写了几个输入字符串的函数,并使用不同的正则表达式来搜索字符串中的模式.所有函数都在同一输入[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))
Run Code Online (Sandbox Code Playgroud)

(defn foophone [string]
(re-seq #"[0-9]{3}-?[0-9]{3}-?[0-9]{4}" s))
Run Code Online (Sandbox Code Playgroud)

regex clojure

0
推荐指数
1
解决办法
94
查看次数

标签 统计

clojure ×4

clojure-contrib ×3

regex ×3

random ×1