如何使用clojure.string / replace添加反斜杠

时间:2018-02-07 10:58:29

标签: regex string clojure

我正在尝试使用clojure.string/replace来转义某些字符,例如带有反斜杠的星号和反引号(例如ex*mple - > ex\*mple),但我无法理解其功能&#39 ; s自己的逃避规则:

如果我尝试(cs/replace "ex*mple" #"[\*`]" "\\$0"),它会按字面意思处理$0并返回ex$0mple

如果我尝试(cs/replace "ex*mple" #"[\*`]" "\\\\$0"),则会添加两个斜杠:ex\\*mple

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

您的第二种方法(cs/replace "ex*mple" #"[\*`]" "\\\\$0")是正确的。你在结果中看到两个反斜杠的原因是因为这是Clojure在字符串中显示单个反斜杠的方式。如果您打印"ex\\*mple",则会看到ex\*mple

Clojure使用反斜杠作为字符串中的转义字符,因此必须转义反斜杠本身。 ex\*mple不是Clojure中的有效字符串,因为\*是不受支持的转义字符。