Stuart Halloway举了这个例子
(re-seq #"\w+" "The quick brown fox")
作为在Clojure中查找正则表达式匹配匹配的自然方法.在他的书中,这种结构与对匹配器的迭代形成对比.如果所有人都关心的是一系列比赛,这将是很棒的.但是,如果我想要匹配及其在字符串中的位置怎么办?是否有更好的方法可以让我利用java.util.regex中的现有功能,对原始字符串中的每个索引采用类似于序列的理解?换句话说,人们想输入类似的东西
(re-seq-map#"[0-9] +""3a1b2c1d")
这将返回一个带有键的地图作为位置和值作为匹配,例如
{0 "3", 2 "1", 4 "2", 6 "1"}
是否已经在现存的图书馆中实现了这一点,或者我应该写它(不应该是代码行)?
Bri*_*per 10
您可以从java.util.regex.Matcher对象中获取所需的数据.
user> (defn re-pos [re s]
        (loop [m (re-matcher re s)
               res {}]
          (if (.find m)
            (recur m (assoc res (.start m) (.group m)))
            res)))
#'user/re-pos
user> (re-pos #"\w+" "The quick brown fox")
{16 "fox", 10 "brown", 4 "quick", 0 "The"}
user> (re-pos #"[0-9]+" "3a1b2c1d")
{6 "1", 4 "2", 2 "1", 0 "3"}
| 归档时间: | 
 | 
| 查看次数: | 1864 次 | 
| 最近记录: |