2

这比 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" "!")

我得到所有单词的地方,但单词之间的其他所有内容也包括在内。我不在乎时间和空间是分开的"." " "还是在一起的“。”

这对正则表达式来说很简单吗?

4

2 回答 2

3

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

\w+|\W+

> (re-seq #"\w+|\W+" "This is a test. Only a test!")
("This" " " "is" " " "a" " " "test" ". " "Only" " " "a" " " "test" "!")
于 2013-08-31T19:01:34.857 回答
0

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

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

这也不会偷懒。

于 2013-08-31T19:07:11.590 回答