0

当我使用scan(/\p{graph}+/)它时:

"ich gehe nach Köln am 12.09.2012".scan(/\p{graph}+/)
=> ["ich", "gehe", "nach", "Köln", "am", "12.09.2012"]

但是如果出现像“ Köln.am”这样的输入错误,那么输出是错误的:

"ich gehe nach Köln.am 12.09.2012".scan(/\p{graph}+/)
=> ["ich", "gehe", "nach", "Köln.am", "12.09.2012"]

当我使用scan(/\p{alnum}+/)时,日期不正确:

"ich gehe nach Köln.am 12.09.2012".scan(/\p{alnum}+/)
=> ["ich", "gehe", "nach", "Köln", "am", "12", "09", "2012"]

有谁知道另一种解决方案?

4

2 回答 2

0

对于这个简单的情况,您可以使用交替进行检查,并匹配一系列字母或一系列带点的数字。

"ich gehe nach Koeln.am 12.09.2012".scan(/\p{alpha}+|[\d+.]+/)

输出:

["ich", "gehe", "nach", "Koeln", ".", "am", "12.09.2012"]

或者,如果您不想匹配单点

"ich gehe nach Koeln.am 12.09.2012".scan(/\p{alpha}+|\d+(?:\.\d+)*/)

输出:

["ich", "gehe", "nach", "Koeln", "am", "12.09.2012"]
于 2012-10-01T14:45:59.800 回答
-1

我不确定你想要什么结果,所以我的回答可能不正确。

"ich gehe nach Köln am 12.09.2012".split /\s/
 => ["ich", "gehe", "nach", "Köln", "am", "12.09.2012"]

编辑:

请注意,连续的几个空格会破坏结果。

"ich gehe nach Köln        am 12.09.2012".split /\s/
 => ["ich", "gehe", "nach", "Köln", "", "", "", "", "", "", "", "am", "12.09.2012"]
于 2012-10-01T14:28:02.030 回答