【发布时间】:2011-01-23 04:06:15
【问题描述】:
我正在尝试找到一种让 Scanner 使用给定分隔符作为标记的好方法。例如,我想将一段文本分成数字和非数字块,所以理想情况下,我只需将分隔符设置为 \D 并设置一些标志,如 useDelimiterAsToken,但在简要浏览 API 之后,我'没有想出任何东西。现在我不得不对分隔符使用组合的lookaheads/lookbehinds,这有点痛苦:
scanner.useDelimiter("((?<=\\d)(?=\\D)|(?<=\\D)(?=\\d))");
这会查找从数字到非数字的任何转换,反之亦然。有没有更理智的方法来做到这一点?
【问题讨论】:
-
请参阅:stackoverflow.com/questions/2206378/…,也许有帮助。
-
问题是如果我对
\d或\d+做同样的事情,它会在太多地方匹配
标签: java regex token java.util.scanner delimiter