【发布时间】:2018-02-06 15:43:06
【问题描述】:
我的问题是 Python 上 this 查询的 Scala (Java) 变体。
特别是,我有一个字符串val myStr = "Shall we meet at, let's say, 8:45 AM?"。我想标记它 并 保留分隔符(除了空格)。如果我的分隔符只是字符,例如., :, ? 等等,我可以这样做:
val strArr = myStr.split("((\\s+)|(?=[,.;:?])|(?<=\\b[,.;:?]))")
产生
[Shall, we, meet, at, ,, let's, say, ,, 8, :, 45, AM, ?]
但是,我希望将拍号\\d+:\\d+ 设为分隔符,并且仍想保留它。所以,我想要的是
[Shall, we, meet, at, ,, let's, say, ,, 8:45, AM, ?]
注意:
- 在 split 语句的表达式中添加析取
(?=(\\d+:\\d+))没有帮助 - 在拍号之外,
:本身就是一个分隔符
我怎样才能做到这一点?
【问题讨论】:
-
你有机会检查我的方法吗?
-
是的,到目前为止,我一直在检查提到的两种方法。我只是在我拥有的更通用的示例上进行尝试。
-
好,请注意我的方法匹配 1) 时间子字符串作为整个单词,或 2) 任何分隔符字符块,或 3) 任何不是你的分隔符和时间字符串作为整个单词.我相信它足够全面,可以按照您需要的方式标记字符串。
标签: java regex string scala tokenize