我正在尝试匹配字符串中某个位置k(下例中的k = 3)的模式.
我试过了
(re-seq #"^alex" (str (drop 3 "xxxalexandre")))
Run Code Online (Sandbox Code Playgroud)
但它不匹配任何东西(=> nil)
什么是Clojure方式呢?(我在Clojure 1.4.0上)
一个很好的选择是在任何地方匹配模式,但是我需要在输入中找到模式的位置.我可以不访问java.util.regex.Matcher实例吗?(我被告知非常糟糕,因为它是可变的)
表达(str (drop 3 ...应该是(apply str (drop 3 ....
但是,更好的是使用subs:
user=> (re-seq #"^alex" (subs "xxxalexandre" 3))
("alex")
Run Code Online (Sandbox Code Playgroud)
或者,如果您愿意,请在正则表达式中输入三个字符:
user=> (map second (re-seq #"^...(alex)" "xxxalexandre"))
("alex")
Run Code Online (Sandbox Code Playgroud)
对于你的后续行动,找到匹配的位置,一种方法(对于简单的情况)将用于.indexOf结果:
user=> ((fn [s p] (let [[m] (re-seq p s)] [m (.indexOf s m)])) "xxxalexandre" #"alex")
["alex" 3]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2723 次 |
| 最近记录: |