如何拆分字符串,例如
wo.rd55hello?35.7e+2CAPS!-78.00E-7
到
wo.rd 55 hello? 35.7e+2 CAPS! -78.00E-7
一种新方法,因为 JavaRegex.Split()
似乎没有将分隔符保留在结果中,即使它们包含在捕获组中:
Pattern regex = Pattern.compile(
"[+-]? # Match a number, starting with an optional sign,\n" +
"\\d+ # a mandatory integer part,\n" +
"(?:\\.\\d+)? # optionally followed by a decimal part\n" +
"(?:e[+-]?\\d+)? # and/or an exponential part.\n" +
"| # OR\n" +
"(?: # Match...\n" +
" (?![+-]?\\d) # (unless it's the beginning of a number)\n" +
" . # any character\n" +
")* # any number of times.",
Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | Pattern.COMMENTS);
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
matchList.add(regexMatcher.group());
}
请注意,此正则表达式与“缩写”十进制数不匹配1.
或不.1
正确 - 它假定十进制数始终作为整数部分和小数部分。如果需要包括这些情况,则需要增加正则表达式。
你可以使用这个网站来开发你的正则表达式: http: //gskinner.com/RegExr/它有一个标记库和一个描述。它还具有实时亮点。您可以看到结果(如您所愿)。它真的很容易使用,我认为有一个桌面版本。