【发布时间】:2016-12-27 19:02:44
【问题描述】:
我有一个类似于How to split a string, but also keep the delimiters? 的问题。如何使用正则表达式拆分字符串,保留某些类型的分隔符,但不保留其他分隔符?具体来说,我想保留非空白分隔符,而不是空白分隔符。
具体化:
"a;b c" | ["a", ";", "b", "c"]
"a; ; bb c ;d" | ["a", ";", ";", "bb", "c", ";", "d"]
这可以用正则表达式干净地完成吗?如果可以,如何?
现在我正在解决这个问题,先拆分要保留的角色,然后再拆分另一个。如果正则表达式不能这样做,或者不能干净地这样做,我可以坚持这种方法:
Arrays.stream(input.split("((?<=;)|(?=;))"))
.flatMap(s -> Arrays.stream(s.split("\\s+")))
.filter(s -> !s.isEmpty())
.toArray(String[]::new); // In practice, I would generally use .collect(Collectors.toList()) instead
【问题讨论】:
标签: java regex split regex-lookarounds