Clojure用正则表达式替换字符串

时间:2014-12-03 13:53:41

标签: regex replace clojure

您好我想以特殊方式替换文件中的字符串。

例如,我正在使用正则表达式#“\ WhideMenu \ W”搜索类似“hideMenu()”的字符串,这样它就不会返回hideMenu所在的文本,如“willHideMenu()”。

我正在使用这样的替换功能:

(clojure.string/replace textFile #"\WhideMenu\W" "hideMenu2")

但问题是它现在也替换了文本文件的第一个空格和最后一个字符。

例如,如果有:

function hideMenu() 

它将是:

functionhideMenu2)

这是非常合乎逻辑的,但如何在不丢失第一个和最后一个字符的情况下使用替换?我想要结果:

function hideMenu2()

2 个答案:

答案 0 :(得分:2)

如果clojure支持它,请使用前瞻和后面的Regex:

(clojure.string/replace textFile #"(?<=\W)hideMenu(?=\W)" "hideMenu2")

否则你可能需要匹配角色并在替换中使用它:

(clojure.string/replace textFile #"(\W)hideMenu(\W)" "$1hideMenu2$2")

答案 1 :(得分:1)

\W匹配非单词字符,(就是其中之一。你可能想要的是一个单词边界匹配,表示为\b

(clojure.string/replace "hideMenu()" #"\bhideMenu\b" "hideMenu2")
;; => "hideMenu2()"