在Clojure中用*替换* [英] Replacing * with \* in Clojure

查看:109
本文介绍了在Clojure中用*替换*的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在clojure中转义*\ *似乎无法正常工作:

How do I escape "*" to "\*" in clojure? Can't seem to get it to work:

(s / replaceA * B#**) code>产生A * B(当然)

s / replaceA * B#*\ *)失败:不支持的转义符:*

(s /替换A * B#*\\ *)产生

(s / replaceA * B#* \\\ *)失败:不支持的转义符:*

(s / replaceA * B#\\\\ **)产生A \\ * B

我无法得到 A \ * B
任何想法?感谢

I can't get it to produce A\*B Any ideas? Thanks

推荐答案

您必须使用4个反斜杠:

You have to use 4 backslashes:

> (println (clojure.string/replace "A*B" #"\*" "\\\\*"))
A\*B
nil
>  

或者没有正则表达式,它只是:

or, without a regex, it's simply:

> (println (clojure.string/replace "A*B" "*" "\\*"))
A\*B
nil
>  






要将其用作正则表达式模式,请使用 重新模式 功能:

> (def p (clojure.string/replace "A*B" #"\*" "\\\\*"))
#'sandbox17459/p
> (println p)
A\*B
nil
> (clojure.string/replace "BLA*BLA" (re-pattern p) "UH")
"BLUHLA"
>  

这篇关于在Clojure中用*替换*的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆