【发布时间】:2018-11-02 16:51:20
【问题描述】:
我有一个用例,我必须处理任何转义/未转义字符作为分隔符来拆分句子。到目前为止,我们拥有的未转义/转义字符是:
" " (space),"\\t","|", "\\|",";","\\;","," etc
到目前为止,它正在使用正则表达式,定义为:
String delimiter = " ";
String regex = "(?:\\\\.|[^"+ delimiter +"\\\\]++)*";
输入字符串是:
String input = "234|Tamarind|something interesting ";
现在,下面是拆分和打印的代码:
List<String> matchList = new ArrayList<>( );
Matcher regexMatcher = pattern.matcher( input );
while ( regexMatcher.find() )
{
matchList.add( regexMatcher.group() );
}
System.out.println( "Unescaped/escaped test result with size: " + matchList.size() );
matchList.stream().forEach( System.out::println );
但是,意外存储了额外的字符串(新行)。所以输出看起来像:
Unescaped/escaped test result with size: 5
234|Tamarind|something
interesting
.
有没有更好的方法来做到这一点,这样就不会有任何额外的字符串?
【问题讨论】:
-
你能把输入的字符串贴出来让我们重现吗?
标签: java regex pattern-matching