Regex 函数在作用于正则表达式组(Clojure)时行为不正常
下面的代码有一个让我吃惊的错误。我的目标是用相对链接的标记格式替换用双方括号括起来的内容。“slug”函数是删除空格和更改文件扩展名的助手。当我直接调用它时,它似乎工作得很好——它将“itsalink”转换为“its-a-link.html”。但当我在Regex 函数在作用于正则表达式组(Clojure)时行为不正常,regex,clojure,Regex,Clojure,下面的代码有一个让我吃惊的错误。我的目标是用相对链接的标记格式替换用双方括号括起来的内容。“slug”函数是删除空格和更改文件扩展名的助手。当我直接调用它时,它似乎工作得很好——它将“itsalink”转换为“its-a-link.html”。但当我在“$1”上调用它时,它会修复文件扩展名,但不会将空格转换为连字符。这是我第一次使用“$1”,所以我打赌问题出在哪里 (ns grothendieck.nanoformats (:require [clojure.string :as strin
“$1”
上调用它时,它会修复文件扩展名,但不会将空格转换为连字符。这是我第一次使用“$1”
,所以我打赌问题出在哪里
(ns grothendieck.nanoformats
(:require [clojure.string :as string])
(:require [swiss.arrows :refer :all]))
(defn slug [f]
"Replaces a filename's spaces with friendly hyphens and prepares its file extension."
(-<> f
(string/lower-case)
(string/replace <> " " "-")
(string/replace <> #"\.(wiki|md)" "")
(str <> ".html")))
(defn internal-links [text]
(string/replace text #"\[\[(.+)\]\]" (str "[$1](" (slug "$1") ")")))
(ns grothendieck.nanoformats)
(:require[clojure.string:as string])
(:require[瑞士箭头:参考:全部])
(定义段塞[f]
“用友好的连字符替换文件名的空格,并准备其文件扩展名。”
(-f)
(字符串/小写)
(字符串/替换为“-”)
(字符串/替换为#“\(wiki | md)”)
(str“.html”))
(defn内部链接[文本]
(字符串/替换文本“\[\[(.+)\]\]”(str“[$1](“(slug“$1”)))
函数slug
将“$1”
作为参数获取,因为str
表单在string/replace
看到它之前已完全求值。您需要的不是模式字符串,而是函数
(defn internal-links
[text]
(string/replace text #"\[\[(.+)\]\]"
(fn [[full-match first-group]]
(str "[" first-group "](" (slug first-group) ")"))))
这台发动机使用BRE吗?哦!当然,我认为使用瑞士箭头让我觉得我可以穿任何旧东西,它会实现我的意思,而不是我说的。