我该如何分割字符串,如分割字母,数字的字符串,和标点符号
wo.rd55hello?35.7e+2CAPS!-78.00E-7
到
wo.rd 55 hello? 35.7e+2 CAPS! -78.00E-7
我该如何分割字符串,如分割字母,数字的字符串,和标点符号
wo.rd55hello?35.7e+2CAPS!-78.00E-7
到
wo.rd 55 hello? 35.7e+2 CAPS! -78.00E-7
因为Java的Regex.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
”之类的“缩写”十进制数字不正确匹配 - 它假定十进制数字始终为整数部分和小数部分。如果需要包含这些情况,则需要增加正则表达式。
谢谢。这是由数字分裂,但我希望数字也包括在内。另外,什么是(?ix) – user2430361
啊,所以Java的行为不同于其他正则表达式引擎,如果它包含在捕获组中,那么在结果列表中包含分隔符......在这种情况下,您需要一种不同的方法。等一下。 (顺便说一下,我评论了正则表达式来解释'(?ix)'是什么意思 - 大小写不敏感匹配和详细(注释)模式) –
谢谢!太棒了。 – user2430361
你可以用这个网站来开发你的正则表达式:http://gskinner.com/RegExr/它有一个令牌库和一个描述。它也有实时的亮点。你可以看到结果(你希望的)。它真的很容易使用,我认为有一个桌面版本。
也许你必须使用'正则表达式' – Andremoniy
是的,我正在使用正则表达式。我坚持分开有e,E和。的数字。 – user2430361
添加一些代码你试过 – newuser