clojure正则表达式匹配单词和中间的一切

时间:2013-08-31 18:57:32

标签: regex clojure

这比Clojure更像是一个正则表达式问题,但我在Clojure中测试它。

(re-seq #"\w+" "This is a test. Only a test!")

产生

("This" "is" "a" "test" "Only" "a" "test")

我想要这个:

("This" " " "is" " " "a" "test" ". " "Only" " " "a" " " "test" "!")

我得到了所有单词,但单词之间的其他内容也包括在内。   如果它们是单独的"." " "或一起“,我不关心时间和空间。”

这与正则表达式有关吗?

2 个答案:

答案 0 :(得分:3)

尝试使用以下正则表达式:

\w+|\W+

> (re-seq #"\w+|\W+" "This is a test. Only a test!")
("This" " " "is" " " "a" " " "test" ". " "Only" " " "a" " " "test" "!")

答案 1 :(得分:0)

您可能可以使用匹配字边界的\b并使用string/split。唯一的问题是它也会匹配字符串的开头:

(rest (clojure.string/split "This is a test. Only a test!" #"\b"))

这也不会很懒惰。